javascript - 查找元素在浏览器滚动中的位置

标签 javascript html

我需要一些关于查找元素位置的帮助。 我正在开发一个电子书阅读器,它也是所有带有 CSS 的 Html。 所有 html 都逐页分段,我必须找到这样的元素

<span name="Note" style="background-color:rgb(255,255,204)">Example</span>

每个人都建议这样的代码;

function position(elem) {
    var left = 0,
        top = 0;

    do {
        left += elem.offsetLeft;
        top += elem.offsetTop;
    } while ( elem = elem.offsetParent );

    return [ left, top ];
}position(document.getElementsByName('Note')[0]);

但这对我不起作用;我需要使用 JavaScript 滚动时元素的真实位置。

最佳答案

var note = document.getElementsByName('Note')[0];
var screenPosition = note.getBoundingClientRect();

getBoundingClientRect() 返回的ClientRect具有 .top 的值, .left , .right , .bottom , .width , 和 .height .

这些是可见窗口上的像素位置;当您滚动页面时 .top.bottom值会发生变化,甚至可能随着项目滚出 View 顶部而变为负值。

请注意,与累积 offsetLeft 的解决方案不同/offsetTop —这个解决方案正确地考虑了 body 上的边框和填充和 html所有浏览器 (Firefox) 中的元素。

查看此测试用例:http://jsfiddle.net/QxYDe/4/ (滚动页面并观察值的变化)。

还有 supported by Internet Explorer .

关于javascript - 查找元素在浏览器滚动中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8070639/

相关文章:

javascript - 如何在循环中将元素推送到多维数组(javascript)?

javascript - 给对象属性一个数组值?

javascript - 如何在不知道 key 的情况下访问 javascript 对象值

html - 如何在导航栏中包含自定义开关

c# - 是否可以在 RadGrid 中垂直而不是水平显示数据?

html - rails : Best practice to generate custom HTML in Model?

php - 在单独的 php 头文件中包含 jquery 以某种方式失败

javascript - 转换下拉框的内容并将其存储在变量中

html - 为什么 css 表中的非单元格 div 在 chrome 中具有非零宽度?

javascript - 如何同时拖动2个div