jquery实现拖动效果(代码分享)


Posted in Javascript onJanuary 25, 2017

话不多说,请看代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
 <style type="text/css">
 .page{text-align:left;}
 .dragDiv{border:1px solid #ddd; padding:10px; width:300px; margin:0 auto; border-radius:4px; box-shadow:0 1px 2px #fefefe; position: fixed;}
 </style>
 <div class="dragDiv" id="drag">
 <div class="drag-head">自己动手试试</div>
 <div class="drag-body">
 点击鼠标拖拖看
 </div>
 </div>
</body>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
 var _drag = {};
 _drag.top = 0; //拖动过的位置距离上边
 _drag.left = 0; //拖动过的位置距离左边
 _drag.maxLeft; //距离左边最大的距离
 _drag.maxTop; //距离上边最大的距离
 _drag.dragging = false; //是否拖动标志
 //拖动函数
 function bindDrag(el){ 
 var winWidth = $(window).width(), winHeight =$(window).height(),objWidth = $(el).outerWidth(), objHeight = $(el).outerHeight();
 _drag.maxLeft = winWidth - objWidth, _drag.maxTop = winHeight - objHeight;
 var els = el.style,x=0,y=0;
 var objTop = $(el).offset().top, objLeft = $(el).offset().left;
 $(el).mousedown(function(e){ 
 _drag.dragging = true;
 _drag.isDragged = true;
 x = e.clientX - el.offsetLeft; 
 y = e.clientY - el.offsetTop; 
 el.setCapture && el.setCapture(); 
 $(document).bind('mousemove',mouseMove).bind('mouseup',mouseUp);
 return false;
 }); 
 function mouseMove(e){ 
 e = e || window.event;
 if(_drag.dragging){
 _drag.top = e.clientY - y; 
 _drag.left = e.clientX - x;
 _drag.top = _drag.top > _drag.maxTop ? _drag.maxTop : _drag.top;
 _drag.left = _drag.left > _drag.maxLeft ? _drag.maxLeft : _drag.left;
 _drag.top = _drag.top < 0 ? 0 : _drag.top;
 _drag.left = _drag.left <0 ? 0 : _drag.left;
 els.top = _drag.top + 'px'; 
 els.left = _drag.left+ 'px';
 return false;
 }
 } 
 function mouseUp(e){ 
 _drag.dragging = false; 
 el.releaseCapture && el.releaseCapture(); 
 e.cancelBubble = true;
 $(document).unbind('mousemove',mouseMove).unbind('mouseup',mouseUp); 
 }
 $(window).resize(function(){
 var winWidth = $(window).width(),
 winHeight = $(window).height(),
 el = $(el),
 elWidth = el.outerWidth(),
 elHeight = el.outerHeight(),
 elLeft = parseFloat(el.css('left')),
 elTop = parseFloat(el.css('top'));
 _drag.maxLeft = winWidth - elWidth;
 _drag.maxTop = winHeight - elHeight;
 _drag.top = _drag.maxTop < elTop ? _drag.maxTop : elTop;
 _drag.left = _drag.maxLeft < elLeft ? _drag.maxLeft : elLeft;
 el.css({
 top:_drag.top,
 left:_drag.left
 })
 })
 } 
 bindDrag(document.getElementById('drag'));
</script>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
js 省地市级联选择
Feb 07 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 Javascript
查找页面中所有类为test的结点的方法
Mar 28 Javascript
js语法学习之判断一个对象是否为数组
May 13 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
Oct 22 Javascript
Javascript常用字符串判断函数代码分享
Dec 08 Javascript
JavaScript中的函数声明和函数表达式区别浅析
Mar 27 Javascript
javascript设计模式Constructor(构造器)模式
Aug 19 Javascript
纯js实现悬浮按钮组件
Dec 17 Javascript
详解如何在Javascript和Sass之间共享变量
Nov 13 Javascript
vue项目打包之开发环境和部署环境的实现
Apr 23 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 31 Javascript
angular forEach方法遍历源码解读
Jan 25 #Javascript
three.js实现围绕某物体旋转
Jan 25 #Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 #Javascript
angular和BootStrap3实现购物车功能
Jan 25 #Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 #Javascript
谈谈JavaScript数组常用方法总结
Jan 24 #Javascript
js实现日历的简单算法
Jan 24 #Javascript
You might like
php 定义404页面的实现代码
2012/11/19 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
php无限极分类实现方法分析
2019/07/04 PHP
关于JavaScript的一些看法
2009/05/27 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
Python中的下划线详解
2015/06/24 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
Python计算信息熵实例
2020/06/18 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
应届生人事助理求职信
2013/11/09 职场文书
好人好事事迹材料
2014/02/12 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
读书月活动方案
2014/05/22 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
单位租房协议范本
2014/12/03 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
会议简报格式范文
2015/07/20 职场文书
七年级英语教学反思
2016/02/15 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
Python基础知识之变量的详解
2021/04/14 Python
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
解析Redis Cluster原理
2021/06/21 Redis