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 相关文章推荐
将CKfinder整合进CKEditor3.0的新方法
Jan 10 Javascript
Jquery ajaxsubmit上传图片实现代码
Nov 04 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
Apr 16 Javascript
查找iframe里元素的方法可传参
Sep 11 Javascript
iframe如何动态创建及释放其所占内存
Sep 03 Javascript
form表单转Json提交的方法(推荐)
Sep 23 Javascript
微信小程序 封装http请求实例详解
Jan 16 Javascript
Angular2平滑升级到Angular4的步骤详解
Mar 29 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
Jun 09 Javascript
Node.js npm命令运行node.js脚本的方法
Oct 10 Javascript
在Express中提供静态文件的实现方法
Oct 17 Javascript
微信小程序聊天功能的示例代码
Jan 13 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使用curl模拟登录后采集页面的例子
2013/11/04 PHP
php过滤敏感词的示例
2014/03/31 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
js变量提升深入理解
2016/09/16 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
python基础教程之自定义函数介绍
2014/08/29 Python
Python随机数random模块使用指南
2016/09/09 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
大学毕业感言100字
2014/02/03 职场文书
保密承诺书
2014/03/27 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
如何写求职信
2014/05/24 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python