DayDay's Studio.

JavaScript 获取 Element 的宽度的多种姿势

字数统计: 344阅读时长: 1 min
2020/10/26 Share

JavaScript 获取 Element 的宽度的多种姿势

最近在写一个小组件,涉及到获取 Element 的宽度,就顺便整理了一些

clientWidth & offsetWidth

如果 Element 的宽度是写在 css 文件中的,比较常见的方法就是通过 HTMLElement.clientWidthHTMLElement.offsetWidth 来获得。

两则的区别很明显:

  • 前者得到的宽度是 内容区宽度 + padding
  • 后者得到的宽度是 内容区宽度 + padding + border + margin

但是如果元素添加了 display: none 的样式, 那么上面两种方法得到的值都会是 0

那要怎么获得隐藏起来的元素的宽度?

虽然上述的两种方式不适用于 display:none 的情况,但是适用于 visibility:hidden 的情况。

如果想获取 display: none 元素的宽度,目前我是用一下两种方式的:

  • 第一种,元素的宽度用内联样式定义,然后通过 HTMLElement.style.width 获得宽度
  • 第二种,通过 window.getComputedStyle() 来获得
    • window.getComputedStyle(target).width,需要注意的是,得到的宽度是一个字符串,例如 100PX
    • 获得的宽度值会受 box-sizing 样式的影响
    • 无论是宽度是内联样式定义的还是外联样式定义的,都可以获取到

个人非常喜欢第二种方式,目前看来在各种情况下都能拿到我想要的宽度!

CATALOG
  1. 1. JavaScript 获取 Element 的宽度的多种姿势
    1. 1.1. clientWidth & offsetWidth
    2. 1.2. 那要怎么获得隐藏起来的元素的宽度?