- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[互联网]html5第二课
第二课
——添加DRAG事件
一、设计方法让你的元素随你动起来
上一课最后我们添加了最简单的一些交互,当鼠标点击后会运行预设的效果。
在这节课我们要让我们生成的元素实现拖拽。
2、介绍鼠标事件
onClick 鼠标点击某个对象触发
onDblClick 鼠标双击某个对象触发
onMouseDown 鼠标在某个对象上被按下后 触发
onMouseUp 鼠标在某个对象上被松开后 触发
onMouseOver 鼠标在某个对象上移动时触 发
onMouseOut 鼠标在移出某个对象时触发
在JS中大小写是很敏感的,不同于在html的标签里添加事件可随意大小写。以下为简单示例:
1-在HTML标签里大小写很随意
div style =“” onmousedown = func()
OK
div style =“” OnMOUseDOwn = func()
OK
2-在JS中大小写敏感,都是小写
label.onmousedown = func(){}
OK
label.onMouseDown = func(){}
FAIL
3-用addEventListener这种方法时不仅大小写依旧敏感,而且不用写on
label.addEventListener
(mousedown,onEvent() ,false);
OK
label.addEventListener
(onmousedown,onEvent() ,false);
FAIL
3、分析一下实现拖拽的几个步骤
实现对一个对象的拖拽,基本可分为以下几个过程:
拖拽初始化
开始拖拽
结束拖拽
⑴拖拽初始化
这个过程我们会选择一个对象,并且用鼠标点下该对象,所以要用到onMouseDown。
⑵开始拖拽
这个过程中我们的鼠标一直在对象的范围内,并且不断的移动,会用到onMouseMove。
⑶结束拖拽
当鼠标按键被抬起,整个拖拽过程就结束了,会用到onMouseUp。
4、进阶分析——拖拽初始化
⑴初始化的时候,需要进行第一次获取当前位置。这里我们需要的是鼠标的位置。
关于鼠标位置,浏览器已经为我们提供了一个浏览器事件对象,方便我们进行获取。
鼠标位置常用有三类,即
clientX/clientY
offsetX/offsetY
screenX/screenY
通过下图我们可以了解到他们之间的差异。
⑵对于拖拽的第二步会用到onmousemove事件。这一事件所引发的拖拽应该是在鼠标按下并初始化后才有效的,而当仅仅是鼠标滑过且没有鼠标按下时不应进行拖拽。
所以整个拖拽过程应该有某个变量来说明当前的状态是不是经过了初始化。
这一步需要在初始化中完成。
5、进阶分析——开始拖拽
这个是一个反复进行的过程,因为鼠标移动时不断地触发onmousemove事件。
我们的基本思路是每次触发后
通过计算鼠标新旧坐标的差值,由此得到一个位移矢量;
根据位移矢量通过上一节课中的setStyle()函数来改变对象的位置;
最后再更新鼠标坐标。
6、进阶分析——结束拖拽
当结束拖拽的时候我们要还原初始化时候的状态变量,使得拖拽结束后,在对象上移动鼠标不会移动对象。
二、具体实现
1、drag方法结构
创建一个drag方法
以一个元素对象做参数
实现对这个元素添加自定义的drag事件
function drag(obj){//obj为要添加拖拽事件的对象
obj.onmousedown = function(e){
//待添加
}
obj.onmousemove = function(e){
//待添加
}
obj.onmouseup = function(){
//待添加
}
}
浏览器事件对象作为参数传入相应的方法
常写成:
e、ev或者event
2、初始化拖拽
obj.onmousedown = function(e){
this.move = 1;
//我们自己规定的标志this.move
//this.move为0时,拖拽未触发。
//this.move为1时,拖拽被触发。
this.lastX = e.clientX;
this.lastY = e.clientY;
//第一次获取鼠标位置
}
3、开始拖拽
第一步需要判断当前是否处在拖拽状态
若不在拖拽状态就不进行拖拽。
obj.onmousemove = function(e){
if(this.move == 1){//
//拖拽部分
}
}
拖拽的部分根据之前的设计依旧分为三部分:
生成位移矢量
移动
更新坐标。
下面依次实现。
⑴生成位移矢量
var l
您可能关注的文档
- [临床医学]凝血功能监测-课件.ppt
- [临床医学]传染病.ppt
- [临床医学]刘海伟论文改.doc
- [临床医学]医院医保管理.ppt
- [临床医学]医院获得性肺炎杜斌.ppt
- [临床医学]卡美书城分析报告.ppt
- [临床医学]免疫:第十六章 免疫调节.ppt
- [临床医学]医院感染暴发及其处置.ppt
- [临床医学]口服抗菌药物合理用药顺序.ppt
- [临床医学]危重病人的安全转运.ppt
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)