45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 编程代码 > 阅读资讯:javascript拖拽有什么样的应用?

javascript拖拽有什么样的应用?

2016-04-08 10:35:50 来源:www.45fan.com 【

javascript拖拽有什么样的应用?

之前文章中也讲了一下拖拽的基本思想,理论是有了,那实践呢,可以运用到什么地方呢?下面就给大家带来一个用拖拽思想写的一个小实例,供大家参考,大致效果看下图:

javascript拖拽有什么样的应用?

就是这样一个简单的一个拖拽条,你可以把它理解为滚动条,也可以理解为表单中的数量选择控件,也可以理解为进度条,等等,反正你可以改成很多你想要的效果,废话不多说,我们来看看这个是怎么做的吧!

想了想,感觉原理就不用说了吧,我在拖拽效果中就已经说的很清楚了,不清楚的同学可以出门左转,查看 javascript小实例,PC网页里的拖拽 ,我就直接贴代码了:

css:

<style>
#drag_wrap{
 width:220px;
 height:10px;
 position:relative;
 margin:100px auto;
}
.dis_bg{
 width:200px;
 height:10px;
 border-radius:10px;
 background:#ccc;
 margin-left:10px;
}
#drag_bg{
 width:0;
 height:10px;
 border-radius:10px;
 background:#0CF;
}
#drag_box{
 width:20px;
 height:20px;
 border-radius:10px;
 background:#F30;
 position:absolute;
 top:-5px;
 left:0;
 cursor:move;
}
#drag_box span{
 width:40px;
 height:20px;
 text-align:center;
 line-height:20px;
 border:1px solid #ccc;
 position:absolute;
 top:-25px;
 left:-10px;
 color:#333;
 background:#fff;
}
#drag_wrap1{
 width:10px;
 height:220px;
 position:relative;
 margin:100px auto;
}
.dis_bg1{
 width:10px;
 height:200px;
 border-radius:10px;
 background:#ccc;
 position:absolute;
 top:10px;
}
#drag_bg1{
 width:10px;
 height:0;
 border-radius:10px;
 background:#0CF;
}
#drag_bg1{
 width:10px;
 height:0;
 border-radius:10px;
 background:#0CF;
}
#drag_box1{
 width:20px;
 height:20px;
 border-radius:10px;
 background:#F30;
 position:absolute;
 top:-5px;
 left:-5px;
 cursor:move;
}
#drag_box1 span{
 width:40px;
 height:20px;
 text-align:center;
 line-height:20px;
 border:1px solid #ccc;
 position:absolute;
 top:0;
 left:25px;
 color:#333;
 background:#fff;
}
</style>

html:

<div id="drag_wrap">
  <div class="dis_bg">
   <div id="drag_bg"></div>
  </div>
  <div id="drag_box"><span>0</span></div>
   
 </div>
 <div id="drag_wrap1">
  <div class="dis_bg1">
   <div id="drag_bg1"></div>
  </div>
  <div id="drag_box1"><span>0</span></div>
 </div>

JavaScript:

window.onload = function(){
 
  drag("drag_box","drag_wrap","drag_bg","left");
  drag("drag_box1","drag_wrap1","drag_bg1","top");
   
  function drag(obj,parentNode,bgObj,attr,endFn){
   var obj = document.getElementById(obj);
   var parentNode = document.getElementById(parentNode);
   var bgObj = document.getElementById(bgObj);
   var oNum = obj.getElementsByTagName('span')[0];
   obj.onmousedown = function(ev){
    var ev = ev || event;
     
    //非标准设置全局捕获(IE)
    if(obj.setCapture){
     obj.setCapture() 
    };
 
    var disX = ev.clientX - this.offsetLeft,
     disY = ev.clientY - this.offsetTop;
    var oWidth = obj.offsetWidth,
     oHeight = obj.offsetHeight;
    var pWidth = parentNode.offsetWidth,
     pHeight = parentNode.offsetHeight;   
    document.onmousemove = function(ev){
     var ev = ev || event;
     if(attr == "left"){ //横向
      var left = ev.clientX - disX;
      //左侧
      if(left <= 0){
       left = 0;
      }else if(left > pWidth - oWidth){//右侧
       left = pWidth - oWidth;
      };
      obj.style.left = bgObj.style.width = left + 'px';
      oNum.innerHTML = left;
       
     }else if(attr == "top"){ //竖向
      var top = ev.clientY - disY;
       //上面
      if(top <= 0){
       top = 0;
      }else if(top > pHeight - oHeight){//下面
       top = pHeight - oHeight;
      };
      obj.style.top = bgObj.style.height = top + 'px';
      oNum.innerHTML = top;
     };
      
    };
    document.onmouseup = function(ev){
     var ev = ev || event;
     document.onmousemove = document.onmouseup = null;
     endFn && endFn();
     //非标准释放全局捕获(IE)
     if(obj.releaseCapture){
      obj.releaseCapture() 
     };
 
    };
    return false;
   }; 
  } 
  
 }

参数说明:

这里给了5个参数,obj,parentNode,bgObj,attr,endFn,分别是:

obj:被拖拽对象

parentNode:限制被拖拽对象活动区域的对象,一般设为它的父级

bgObj:拖动时的表色背景对象

attr:2个参数left,top,表示是横向拖拽还是纵向拖拽

endFn:返回函数,有就执行,没有就不执行,非必填

以上就是本文的全部内容,希望对大家的学习有所帮助。


本文地址:http://www.45fan.com/bcdm/45374.html
Tags: JavaScript 实例 拖拽
编辑:路饭网
推广内容
推荐阅读
热门推荐
推荐文章
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部