**Element** 是一个通用性非常强的基类,所有 [Document](https://developer.mozilla.org/zh-CN/docs/Web/API/Document) 对象下的对象都继承自它。这个接口描述了所有相同种类的元素所普遍具有的方法和属性。一些接口继承自 Element 并且增加了一些额外功能的接口描述了具体的行为。例如, [HTMLElement](https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElement) 接口是所有 HTML 元素的基本接口,而 [SVGElement](https://developer.mozilla.org/zh-CN/docs/Web/API/SVGElement) 接口是所有 SVG 元素的基础。大多数功能是在这个类的更深层级(hierarchy)的接口中被进一步制定的。

在 Web 平台的领域以外的语言,比如 XUL,通过 XULElement 接口,同样也实现了 Element 接口。

属性

位置信息属性

[Element.clientHeight](https://developer.mozilla.org/zh-CN/docs/Web/API/Element/clientHeight) 元素 content 内容区域的高度

只读返回[Number](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number) 表示内部相对于外层元素的高度。

只读属性,对于没有定义CSS或者内联布局盒子的元素为0,否则,它是元素内部的高度(单位像素),包含内边距,但不包括水平滚动条、边框和外边距。

clientHeight 可以通过 CSS height + CSS padding - 水平滚动条高度 (如果存在)来计算.

offsetHeight 元素高度 content + border的高

[Element.scrollHeight](https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollHeight) 表示元素的滚动视图高度

只读返回类型为: [Number](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number),表示元素的滚动视图高度。

[Element.scrollTop](https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollTop) 表示该元素纵向滚动条距离

返回类型为:[Number](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number) ,表示该元素纵向滚动条距离

[Element.scrollTopMax](https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollTopMax) 只读返回类型为:[Number](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number) ,表示该元素纵向滚动条可移动的最大值

innerWidth

/设置宽度为全屏 width: window.innerWidth,

方法

滚动方法

我们熟知的原生 scroll 方法,大概有这些:

  • scrollTo:滚动到目标位置
  • scrollBy:相对当前位置滚动
  • scrollIntoView:让元素滚动到视野内
  • scrollIntoViewIfNeeded:让元素滚动到视野内(如果不在视野内)

以大家用得比较多的 scrollTo 为例,它有两种调用方式:

  1. // 第一种形式
  2. const x = 0, y = 200;
  3. element.scrollTo(x, y);
  4. // 第二种形式
  5. const options = {
  6. top: 200,
  7. left: 0,
  8. behavior: 'smooth'
  9. };
  10. element.scrollTo(options);

而滚动的行为,即方法参数中的 behavior 分为两种:

  • auto:立即滚动
  • smooth:平滑滚动

除了上述的 3 个 api,我们还可以通过简单粗暴的 scrollTop、 scrollLeft 去设置滚动位置:

  1. // 设置 container 上滚动距离 200
  2. container.scrollTop = 200;
  3. // 设置 container 左滚动距离 200
  4. container.scrollLeft = 200;