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 相关文章推荐
js 小贴士一星期合集
Apr 07 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
Dec 29 Javascript
在HTML中插入JavaScript代码的示例
Jun 03 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
Apr 29 Javascript
AngularJs定制样式插入到ueditor中的问题小结
Aug 01 Javascript
js cookie实现记住密码功能
Jan 17 Javascript
原生javascript移动端滑动banner效果
Mar 10 Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 Javascript
微信小程序websocket实现聊天功能
Mar 30 Javascript
Vue组件间的通信pubsub-js实现步骤解析
Mar 11 Javascript
浅谈JSON5解决了JSON的两大痛点
Dec 14 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
Jan 13 Vue.js
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生成RSS订阅的方法
2015/02/13 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
AngularJS bootstrap启动详解及实例代码
2016/09/14 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
jQuery实现日历效果
2020/09/11 jQuery
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
200 行python 代码实现 2048 游戏
2018/01/12 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
销售顾问的岗位职责
2013/11/13 职场文书
草船借箭教学反思
2014/02/03 职场文书
会计自我鉴定
2014/02/04 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
董事长新年致辞
2015/07/29 职场文书
董事长秘书工作总结
2015/08/14 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang