老师我还是有点疑惑
var l=el.clientX-this.offsetLeft;
var needX=el.clientX-l;
就是offsetLeft他获取的是元素距离父元素的距离,clientX获取的是元素距离页面左侧的距离,clientX是随着鼠标的移动不断获取距离,offsetLeft是只能获取一次距离不能不断更新距离吗?所以最后不能用offsetLeft来
直接替代needX,是这样吗?
正在回答
同学你好,是的,也可以这样理解的,老师在上次回答的时候说了哦,只有按钮的位置改变了,才可以获取到改变后的offsetLeft值, 这里如果通过offsetLeft直接设置按钮的left值,按钮没有发生移动,offsetLeft就是一个固定的值。
祝学习愉快~
同学你好,关于同学的问题回答如下:
1、offsetLeft不是只能获取一次距离,在鼠标按下的时候,获取按钮此时距离最左侧的距离, needX表示定位的left值, 也就是按钮移动的距离, 在鼠标移动的过程中clientX值是变化的。可以参考下图注释理解:
2、从第一个回答中,可以看出来,needX和 this.offsetLeft是不相等的。
var l = ev.clientX-this.offsetLeft获取的是鼠标点击那一瞬间的值(可以理解为初始值)
var needX = ev.clinetX - l 表示的是鼠标移动过程中的值,ev.client是不断改变的,所以不可以使用offsetLeft来替代needX。
3、我们要明白,只有按钮的位置改变了,才可以获取到改变后的offsetLeft值, 这里如果通过offsetLeft直接设置按钮的left值,按钮没有发生移动,offsetLeft就是一个固定的值,所以不可以这样写。
结合第一条和第二条的解答去理解,需要在鼠标的移动过程中,通过鼠标距离窗口左侧的距离减去初始值,才可以设置按钮的left值,让按钮的位置发生改变。
如果我的回答帮助了你,欢迎采纳。祝学习愉快~
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星