正文

[JavaScript]网页内容动态拖动2006-12-26 23:55:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/fengfei/21971.html

分享到:

实现动态拖动商品到购物车并添加该商品。 用HTML+JavaScript编写。

主要实现步骤2步:
第一步:初始化event事件,即onmousedown, onmousemove, ommouseup 浏览器的3个事 件,用户一按下,移动,释放鼠标则触发对应的事件

第二步:实现事件处理函数。

 

演示地址:http://scboy.ik8.com/dragImage.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE>Stitch Store </TITLE>

  <style type="text/css">
 .header{ position:absolute; top:28;  left:25; }
 .store { position:absolute; top:43;  left:275; }
 .home  { position:absolute; top:12; left:660; }
 .line  { position:absolute; top:111; left:17; }
 
 .shirtsHd { position:absolute; top:161; left:21;  }
 .shirtGreen { position:absolute; top:161; left:136; z-index:1; }
 .shirtOrange{ position:absolute; top:161; left:232; z-index:1; }
 .shirtPurple{ position:absolute; top:161; left:328; z-index:1; }

 .sweatshirtsHd { position:absolute; top:277; left:21; }
 .sweatOrange { position:absolute; top:277; left:136; z-index:1; }
 .sweatPurple { position:absolute; top:277; left:280; z-index:1; }

 .swellstuffsHd { position:absolute; top:387; left:21; }
 .swellCap  { position:absolute; top:387; left:136; z-index:1; }
 .swellMug  { position:absolute; top:387; left:251; z-index:1; }
 .swellMartini { position:absolute; top:387; left:328; z-index:1; }

 .dragTip{ position:absolute; top:490; left:63; }
 .cart   { position:absolute; top:142; left:462; z-index:3; }
  </style>

 
  <script language="javascript">
 var offsetX = 0; // 点击的层的X坐标
 var offsetY = 0; // 点击的层的Y坐标

 // 层名称
 var layerNameArray = new Array( "shirtGreen", "shirtOrange", "shirtPurple", "sweatOrange", "sweatPurple", "swellCap", "swellMug", "swellMartini" );

 // 选中的层
 var selectedProduct;

 // 初始化事件
 function init() 
 {
  // onmousedown, onmousemove, ommouseup 浏览器的3个事件,用户一按下,移动,
  // 释放鼠标则触发对应的事件

  // 当用户点击鼠标时,则调用grabProduct函数,其他2个累似
  document.onmousedown = grabProduct;
  document.onmousemove = dragProduct;
  document.onmouseup = releaseProduct;
 }

//================================================================
 /* onMouseDwon事件处理函数 */

 // 初始化用户点击
 function grabProduct( e )
 {
  setSelectElem( e ); // 设置选中的层的对象

  if ( selectedProduct ) // 判断是否点击在否为商品层上
  {
   // 获得点击的X,Y坐标(相对于当前层的坐标,不是相对于窗口的坐标)
   offsetX = window.event.offsetX;
   offsetY = window.event.offsetY;

   //alert( offsetX ); // 调式
   //alert( offsetY );
  }
 }

 // 设置层大小
 function setzIndex( product, zorder )
 {
  product.style.zIndex = zorder;
 }
 
 // 获得选中的层的对象
 function setSelectElem( e )
 {
  var imgObj = window.event.srcElement; // 获得点击的对象
  // alert( imgObj.tagName );
  var testObj = imgObj.parentElement;  // 获得图片所属的层对象
  // alert( testObj.tagName );
  var layerName = testObj.id;    // 获得点击的层名

  for ( var i = 0; i < layerNameArray.length; i++ )
  {
   if ( layerName == layerNameArray[i] && imgObj )
   {
    selectedProduct = testObj;  // 获得层对象
    setzIndex( selectedProduct, 100 );
    return;
   }
  }
 }

//================================================================
 /* onMouseMove事件处理函数 */

 // 计算层要移动到的目的地的位置
 function dragProduct( e )
 {
  if ( selectedProduct )
  {
   // 获得当前鼠标的位置
   var x = window.event.clientX - offsetX;
   var y = window.event.clientY - offsetY;

   moveTo( selectedProduct, x, y );
  }
  
  // 使用return false,为了避免一些系统的混乱,防止将层拖动到预定指定的位置之外
  return false;
 }

 // 实际实现层的移动
 function moveTo( product, x, y )
 {
  // 移动层到指定位置
  product.style.left = x;
  product.style.top = y;
 }

//================================================================
 /* onMouseUp事件处理函数 */
 
 // 释放鼠标并将选中的商品添加到购物车
 function releaseProduct( e )
 {
  // 判断是否选中商品
  if ( selectedProduct )
  {
   // 获得当前鼠标x,y坐标
   var releaseX = window.event.clientX;
   var releaseY = window.event.clientY;

   // 获得购物车的Left, Top, Width, Height
   var cartLeft = document.getElementById("cart").offsetLeft;
   var cartTop  = document.getElementById("cart").offsetTop;
   var cartWidth = document.getElementById("cart").offsetWidth;
   var cartHeight = document.getElementById("cart").offsetHeight;

   // 判断当前坐标是否在购物车中
   if ( (releaseX > cartLeft) && (releaseX < cartLeft + cartWidth)
      && (releaseY > cartTop) && (releaseY < cartTop + cartHeight) )
   {
    // 添加到购物车
    alert( "insert into cart" );
   }

   // 设置zIndex=0和清空商品对象
   setzIndex( selectedProduct, 1 );
   selectedProduct = null;
  }
 }

  </script>
 
 </HEAD>

 <BODY onload="init();">
 <div class="header">
  <img src="images/stitch.gif"></img>
 </div>

 <div class="store">
  <img src="images/store.gif"></img>
 </div>

 <div class="home">
  <img src="images/home.gif"></img>
 </div>

 <div class="line">
  <img src="images/black_line.gif"></img>
 </div>

 <div class="shirtsHd">
  <img src="images/shirts.gif"></img>
 </div>

 <div class="shirtGreen" id="shirtGreen">
  <img src="images/shirt_green.gif"></img>
 </div>

 <div class="shirtOrange" id="shirtOrange">
  <img src="images/shirt_orange.gif"></img>
 </div>

 <div class="shirtPurple" id="shirtPurple">
  <img src="images/shirt_purple.gif"></img>
 </div>

 <div class="sweatshirtsHd">
  <img src="images/sweatshirts.gif"></img>
 </div>

 <div class="sweatOrange" id="sweatOrange">
  <img src="images/sweat_orange.gif"></img>
 </div>

 <div class="sweatPurple" id="sweatPurple">
  <img src="images/sweat_purple.gif"></img>
 </div>

 <div class="swellstuffsHd">
  <img src="images/swellstuff.gif"></img>
 </div>

 <div class="swellCap" id="swellCap">
  <img src="images/cap.gif"></img>
 </div>

 <div class="swellMug" id="swellMug">
  <img src="images/mug.gif"></img>
 </div>

 <div class="swellMartini" id="swellMartini">
  <img src="images/martini.gif"></img>
 </div>

 <div class="dragTip">
  <img src="images/drag.gif"></img>
 </div>

 <div class="cart" id="cart">
  <img src="images/cart.gif"></img>
 </div>

 </BODY>
</HTML>

阅读(4731) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册