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 相关文章推荐
实现51Map地图接口(示例代码)
Nov 22 Javascript
jquery选择checked在ie8普通模式下的问题
Feb 12 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
Mar 04 Javascript
使用AOP改善javascript代码
May 01 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
Jun 04 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
Apr 18 Javascript
如何使用jquery实现文字上下滚动效果
Oct 12 Javascript
基于Vuejs和Element的注册插件的编写方法
Jul 03 Javascript
详解html-webpack-plugin用法全解
Jan 22 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
Aug 04 Javascript
JavaScript圣杯布局与双飞翼布局实现案例详解
Aug 05 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连mysql和oracle数据库性能比较
2006/10/09 PHP
第八节--访问方式
2006/11/16 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
施华洛世奇韩国官网:SWAROVSKI韩国
2018/06/05 全球购物
大学生实习证明范本
2014/01/15 职场文书
仓管员岗位责任制
2014/02/19 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
python的变量和简单数字类型详解
2021/09/15 Python
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL