javascript - 获取可滚动父节点顶部和嵌套子节点之一之间的距离
问题描述
我有<ul>
几个垂直滚动<li>
。
HTML:
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
<li>item6</li>
<li>item7</li>
</ul>
CSS:
ul {
max-height: 50px;
}
li {
display: block;
height: 10px;
}
然后用 JS 我得到<ui>
一个<li>
节点:
let ul = document.querySelector('ul')
let li = document.querySelector('li:nth-child(3)')
我想制作一个函数来获取 ul 和 li 节点(类似于getDistance(ul, li)
),它返回 ul 和 li 顶部之间的距离(以像素为单位)。问题是如何实现该功能。
解决方案
x = /*your ul element*/
y = /*your li element*/
distX = y.offsetLeft - x.offsetLeft;
distY = y.offsetTop - x.offsetTop;
distance = Math.sqrt(distX*distX + distY*distY);
alert(Math.floor(distance));
但是如果你把东西放在里面,你必须减去 firstx
的高度和宽度。此方法在不同浏览器中对元素的支持和边框宽度存在一些问题。
推荐阅读
- javascript - D3:转换树形图并保留原始组大小
- javascript - 如何使用 React javascript 完成登陆网站动画并显示网站主页
- python - 图像未显示 tkinter
- r - 如何计算每列的滚动平均值
- r - 如何找到向量R中2列之间的差异?
- python - Pandas - 按组比较当前年份的值与以前所有年份的值,如果是累积最小值则返回 True
- amazon-dynamodb - 如何使用 dynamodb 表设计来证明这些可能的需求更改(交换主键列)?
- android - 颤动一些按钮在某些设备上不起作用
- html - 当我调整它的大小时,我的 Bootstrap 行超出了页面宽度?
- javascript - 从 svg 生成到画布的图像,动画结果,看起来很慢