返回的y值大于实际y位置[JS(无jQ)/DOM]
Returned y-value larger than actual y-position [JS (no jQ) / DOM]
我用以下两种方法之一计算元素el的y位置:
var elTop = 0;
do{
el += el.offsetTop;
}while(el = el.offsetParent);
window.scrollTo(0, elTop);
和
var elTop = (el.getBoundingClientRect()).top;
window.scrollTo(0, elTop);
在这两种情况下,elTop都太高,scrollTo跳得太远。
我在网上试过这个剧本。当我用Firefox下载整个页面时,它突然起了作用。在视觉外观或结构方面,线上/线下没有差异。只有实体的offsetHeight和搜索元素的offsetTop发生了更改。
这些属性如何在没有任何视觉效果的情况下发生变化?
为了避免上述问题,您应该考虑使用getBoundingClientRect()+"页面滚动",而不是计算所有元素的偏移量。
var yPosition = element.getBoundingClientRect().top + window.pageYOffset;
http://jsbin.com/ukuRaXe/2/edit
请注意,此解决方案在<IE9.
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- Windows形成web浏览器控件和Javascript更改的DOM
- Datatables:通过DOM数据源中的名称引用列
- 在DOM中查找一个模式并替换它's的内容使用jquery
- DOM事件通过JSON转换为java
- 将DOM节点值与字符串Javascript进行比较
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 流星中DOM的繁殖
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- PHP-如何重定向到同一页面并更改DOM's
- 如何使用ViewCompiler手动编译DOM的一部分
- 从popup.js|Chrome扩展访问DOM
- React DOM offsetHeight before rendering
- DOM导航-上一个同级未定义
- 返回的y值大于实际y位置[JS(无jQ)/DOM]