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 相关文章推荐
Javascript单元测试框架QUnitjs详细介绍
May 08 Javascript
javascript父、子页面交互技巧总结
Aug 08 Javascript
下一代Bootstrap的5个特点 超酷炫!
Jun 17 Javascript
教你一步步用jQyery实现轮播器
Dec 18 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
JavaScript 中使用 Generator的方法
Dec 29 Javascript
JQuery animate动画应用示例
May 14 jQuery
Vue实现微信支付功能遇到的坑
Jun 05 Javascript
vue用BMap百度地图实现即时搜索功能
Sep 26 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
Nov 01 Javascript
vue+animation实现翻页动画
Jun 29 Javascript
详解Node.JS模块 process
Aug 31 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
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
js过滤数组重复元素的方法
2010/09/05 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
基于pip install django失败时的解决方法
2018/06/12 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
购买原创艺术品:Zatista
2019/11/09 全球购物
为什么会有内存对齐
2016/10/10 面试题
小学教育毕业生自荐信
2013/11/18 职场文书
留学推荐信范文
2014/05/10 职场文书
十八大演讲稿
2014/05/22 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
党员目标管理责任书
2014/07/25 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书