javascript拖拽应用实例


Posted in Javascript onMarch 25, 2016

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

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:返回函数,有就执行,没有就不执行,非必填

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

Javascript 相关文章推荐
让FireFox支持innerText的实现代码
Dec 01 Javascript
jQuery 选择器、DOM操作、事件、动画
Nov 25 Javascript
YUI模块开发原理详解
Nov 18 Javascript
javascript对JSON数据排序的3个例子
Apr 12 Javascript
js中函数调用的两种常用方法使用介绍
Jul 17 Javascript
jQuery操作Table技巧大汇总
Jan 23 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
Jan 10 Javascript
Angular 4.x 路由快速入门学习
May 03 Javascript
js读取本地文件的实例
Dec 22 Javascript
微信小程序实现下拉刷新动画
Jun 21 Javascript
小程序实现可拖动的悬浮按钮
Sep 07 Javascript
JS+CSS实现过渡特效
Jan 02 Javascript
JavaScript学习笔记之创建对象
Mar 25 #Javascript
JS实现的颜色实时渐变效果完整实例
Mar 25 #Javascript
JavaScript学习笔记之ES6数组方法
Mar 25 #Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
Mar 25 #Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
Mar 25 #Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
Mar 25 #Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
Mar 25 #Javascript
You might like
最令PHP初学者头痛的十四个问题
2006/07/12 PHP
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
波兰补充商店:Muscle Power
2018/10/29 全球购物
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
GWT的应用有哪两种部署模式
2012/12/21 面试题
生物科学专业个人求职信范文
2013/12/05 职场文书
求职信的要素有哪些呢
2013/12/26 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
相亲大会策划方案
2014/06/05 职场文书
批评与自我批评总结
2014/10/17 职场文书
具结保证书范本
2015/05/11 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
勤俭节约主题班会
2015/08/13 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python