关于坐标点的计算,帮我看看理解的对不对

来源:7-5 自定义audio-js(2)

王文辉

2020-11-27 00:11:54

其实这个位置是一层层减去的,progressNode——》lineNode——》innerNode——》outerNode,

不过其中lineNode.left=1,innerNode.offsetLeft=0,所以老师没写,这么理解对吗

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【

progressNode.onclick=function(e){

var ev=e||event;

// 此处需要计算出点击位置在外层进度条的多少像素

// 层层减this.offsetLeft——>progressNode.offsetLeft=28

//   this.parentNode.offsetLeft——>lineNode.offsetLeft=1,可忽略

//   this.parentNode.parentNode.offsetLeft——>innerNode.offsetLeft=0

//   this.parentNode.parentNode.parentNode.offsetLeft——>outerNode.offsetLeft=???

// var length=ev.clientX-this.offsetLeft-this.parentNode.offsetLeft-this.parentNode.parentNode.offsetLeft-this.parentNode.parentNode.parentNode.offsetLeft;

var length=ev.clientX-this.offsetLeft-this.parentNode.parentNode.parentNode.offsetLeft;

length=length/this.offsetWidth*100+'%';

// console.log(this.offsetLeft);

// console.log(this.parentNode.offsetLeft);

// console.log(this.parentNode.parentNode.offsetLeft);

// console.log(this.parentNode.parentNode.parentNode.offsetLeft);

trueLine.style.width=length;

}

代码语言】突出显示

写回答

1回答

好帮手慕言

2020-11-27

同学你好,这段计算可以参考下方图示:

http://img.mukewang.com/climg/5fc0714c0977b2cf15360756.jpg

​蓝色这一段距离是ev.clientX,红色的这一段距离是this.offsetLeft,橘色是outerNode.offsetLeft(大盒子的左侧距离),黄色是输出的,也就是进度条长度。

祝学习愉快~


0

0 学习 · 6815 问题

查看课程