div层的移动及性能优化


Posted in Javascript onNovember 16, 2010

同样如果一个页面结构很复杂或者电脑配置不好的话也会出现这种情况。为了弄清变慢的原因,我们做了几个demo对比,最后发现在mousemove事件上加上定时器能改进这个体验。

整个代码的关键地方在于当鼠标按下时开始了的计时器,这样Onmousemove事件会每隔30ms执行一次,然后在鼠标松下的时候清除计时器。

timer=setInterval(function(){flag=true;},30);

这样可以减轻浏览器绘制div层的负担,不至于拖动时每时每刻都在移动,其实太短了人眼也感觉不到变化,延迟间隔可以自己根据体验设置。

function Endrag(source,target){ 
source=typeof(source)=="object" ? source:document.getElementById(source); 
target=typeof(target)=="object" ? target:document.getElementById(target); 
var x0=0,y0=0,x1=0,y1=0,moveable=false,index=100; 
var timer,flag=false; 
var i=0; 
source.onmousedown=function(e){ 
e = e ? e : (window.event ? window.event : null); 
x0 = e.clientX ; 
y0 = e.clientY ; 
x1 = isNaN(parseInt(source.style.left))?0:parseInt(source.style.left); 
y1 = isNaN(parseInt(source.style.top))?0:parseInt(source.style.top); 
moveable = true; 
//当鼠标按下时,定时器开始工作,每隔50ms执行一次mousemove事件 
timer=setInterval(function(){flag=true;},30); 
}; 
//拖动; 
source.onmousemove=function(e){ 
e = e ? e : (window.event ? window.event : null); 
if(moveable){ 
if(flag){ 
i++; 
flag=false; 
target.style.left = (e.clientX + x1 - x0 ) + "px"; 
target.style.top = (e.clientY + y1 - y0 ) + "px"; 
} 
} 
}; 
//停止拖动; 
source.onmouseup=function (e){ 
if(moveable) { 
moveable = false; 
clearInterval(timer); 
//alert(i); 
} 
}; 
//停止拖动; 
source.onmouseout=function (e){ 
if(moveable) { 
moveable = false; 
clearInterval(timer); 
//alert(i); 
} 
}; 
}
Javascript 相关文章推荐
IE和FireFox(FF)中js和css的不同
Apr 13 Javascript
JavaScript全局函数使用简单说明
Mar 11 Javascript
jquery(hide方法)隐藏指定元素实例
Nov 11 Javascript
js中call与apply的用法小结
Dec 28 Javascript
AngularJS基础知识
Dec 21 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
May 03 Javascript
jQuery中的AjaxSubmit使用讲解
Sep 25 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
详解Angular 4.x Injector
May 04 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
Aug 25 Javascript
对Vue beforeRouteEnter 的next执行时机详解
Aug 25 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
Feb 08 Javascript
自用js开发框架小成 学习js的朋友可以看看
Nov 16 #Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
Nov 16 #Javascript
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
Nov 16 #Javascript
javascript Array对象基础知识小结
Nov 16 #Javascript
纯js实现背景图片切换效果代码
Nov 14 #Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
Nov 14 #Javascript
cnblogs中在闪存中屏蔽某人的实现代码
Nov 14 #Javascript
You might like
php中的三元运算符使用说明
2011/07/03 PHP
php支付宝接口用法分析
2015/01/04 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
快速了解python leveldb
2018/01/18 Python
python语言基本语句用法总结
2019/06/11 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
Python如何在bool函数中取值
2020/09/21 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
2014年宣传思想工作总结
2014/12/10 职场文书
答谢词范文
2015/01/05 职场文书
公务员个人总结
2015/02/12 职场文书
小学见习报告
2015/06/23 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript