通常,前端开发很少会主动操作滚动条,不过,功能测试的话有时会涉及这些操作。下面本文将总结一些笔者曾在JS脚本中用到的相关属性和方法。
注:它们都是原生的,但一般并非是标准的,所以需要了解它们的浏览器兼容性。
滚动到可视区
方法 | 描述 |
scrollIntoView() | 方法让当前的元素滚动到浏览器窗口的可视区域内。 |
HTMLElement 对象的方法
HTMLElement 对象继承了 Node和 Element 对象的标准方法。某些类型的元素实现了特定于标记的方法,W3School在 HTML DOM 参考手册的各标记参考页中提供了这些方法的信息。大部分现代浏览器也都实现了该非标准方法。
参考:
Element.scrollIntoViewIfNeeded()
水平垂直滚动
scrollTop, scrollLeft
返回已经滚动到元素的左边界或上边界的像素数。只有在元素有滚动条的时候,例如,元素的 CSS overflow属性设置为 auto 的时候,这些像素才有用。这些属性也只在文档的 <body>或 <html> 标记上定义(这和浏览器有关),并且一起来制定滚动文档的位置。注意,这些属性并不会指定一个 <iframe>标记的滚动量。这是非标准的但却得到很好支持的属性。
参考:
判断是否存在滚动条
scrollHeight, scrollWidth
返回元素的完整的高度和宽度,以像素为单位。当一个元素拥有滚动条时(比如由于 CSS的 overflow 属性),这些属性和 offsetHeight与 offsetWidth 不同,offsetHeight和 offsetWidth 只是报告元素的可见部分的大小。这是非标准的但却得到很好支持的属性。
offsetHeight, offsetWidth
返回元素的高度和宽度,以像素为单位。这是非标准的但却得到很好支持的属性。
通常,scrollHeight > offsetHeight会有垂直滚动条,scrollWidth > offsetWidth会有水平滚动条。