javascript - 如何计算两个元素之间的宽度?

标签 javascript prototypejs

我需要计算两个元素之间的宽度,但我不确定该怎么做。假设我有以下内容:

<ul id="foo">
    <li style="width:10px;"><a href="#">1</a></li>
    <li style="width:20px;"><a href="#">2</a></li>
    <li style="width:30px;"><a href="#">3</a></li>
</ul>

我如何计算 1 和 3 之间的距离(答案是 20 像素)?宽度可以像列表项的数量一样可变? (我使用的是 Prototype 框架)

谢谢

最佳答案

如果你指的是两个元素之间的水平距离,你需要左边元素的右上角坐标和右边元素的左上角坐标之间的差值。元素的右上角坐标就是左上角坐标加上它的宽度,如 Pekka 的回答中给出的那样。

要获取元素的左上角位置,可以使用 javascript 方法 offsetLeft()。这将返回元素与其父元素之间 x 维度的偏移量。您迭代 DOM 树,添加连续的 offsetLeft,直到到达文档根目录。结果总和就是您的 x 位置。优秀Quirksmode向您展示如何执行此操作。

编辑:为了完整起见,我包含了示例 javascript 来查找元素的位置:

function getNodePosition(node) {     
    var top = left = 0;
    while (node) {      
       if (node.tagName) {
           top = top + node.offsetTop;
           left = left + node.offsetLeft;       
           node = node.offsetParent;
       } else {
           node = node.parentNode;
       }
    } 
    return [top, left];
}

关于javascript - 如何计算两个元素之间的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896297/

相关文章:

php - 如何将mysql数据作为ajax参数传递

javascript - 使用 clearTimeout 取消超时事件

javascript - 用于 JavaScript 的轻量级 MVC 框架

javascript - 如何在 Javascript 中捕获鼠标输入?

javascript - jQuery AJAX 后数组

javascript - d3 命运之轮

javascript - 几个 jQuery 问题

javascript - 根据条件组合/扩展两个对象

javascript - 如何隐藏图像?我能怎么做?

javascript - 如何创建自定义树形图样式布局(带锐 Angular )vis.js