javascript - 更正主视口(viewport)的 HTML 滚动元素 (+jQuery)

标签 javascript jquery html scroll scrolltop

当我想通过 javascript 代码滚动网站时,设置 .scrollTop 属性的正确元素是什么?

windowdocumentdocument.body 还是 html 元素?

jQuery 是否有一些技巧来检测滚动主视口(viewport)并统一调用的意图?在我看来,有时 $(window).scroolTop(value) 有效,但有时却无效。

最佳答案

通常,<html>元素,又名 document.documentElement .但是,如果您使用的是 Quirks 模式,<body> ( document.body ) 代表视口(viewport)。 (HTML/CSS 没有明确声明/要求这一点,但这是所有现代浏览器的工作方式。)

你永远不想进入怪癖模式,但如果你正在编写一个脚本以包含在其他人的页面上,你将不得不处理它:

var viewport= document.compatMode==='BackCompat'? document.body : document.documentElement;
// do something with viewport.scrollTop

jQuery 使用 window.scrollTo()而不是直接设置滚动属性。无论哪种方式在实践中都几乎相同。你可能会争辩说使用 scrollTo更简洁一些,因为它避免依赖由特定元素表示的视口(viewport),但是 jQuery 仍然必须使用 scrollTop/scrollLeft无论如何都要读取“其他”属性的当前值,所以没什么大不了的。您可以使用 pageXOffset/pageYOffset在不依赖特定元素的情况下读取当前滚动位置,但并非所有地方都支持它,因此您仍然必须回退到 scrollTop方法。

遗憾的是,这些属性/方法在过去都没有标准化。 CSSOM Views最终解决这个问题。

关于javascript - 更正主视口(viewport)的 HTML 滚动元素 (+jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4375615/

相关文章:

javascript - Angular 的 ngOnInit 和通过 Observable 返回记录的时间

javascript - Angular2、Typescript - 类变量和 "this"的用法

javascript - Typeahead 和 Bloodhound 动态改变局部值

JavaScript 提交处理程序问题

javascript - 在一定宽度内滚动文本

javascript - 用户重新加载页面后 HTML/JQuery 重定向

javascript - 函数与对象文字表示法 - 有区别吗?

javascript - 如何使用 JavaScript 查找操作系统详细信息?

javascript - jquery 附加按钮错误!

html - svg 中的图像在鼠标悬停时不缩放