首页 >web前端 >css教程 >如何在 JavaScript 中获取元素的准确 CSS 属性值(包括单位)?

如何在 JavaScript 中获取元素的准确 CSS 属性值(包括单位)?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-11 09:10:20497浏览

How Can I Get the Exact CSS Property Value (Including Units) of an Element in JavaScript?

获取元素 CSS 属性值作为集合(百分比/Em/Px)

获取元素中指定的 CSS 属性值样式规则可能具有挑战性,特别是当属性已设置为不同的单位时。在 Google Chrome 中, getCompulatedStyle() 方法和 jQuery 的 css() 方法都返回以像素为单位的当前值。

解决方案: getMatchedStyle 函数

要解决此问题,开发了一个名为 getMatchedStyle() 的 JavaScript 函数。它接受一个元素和一个属性作为参数,并返回在 CSS 规则中设置的值。

function getMatchedStyle(elem, property) {
  // Check element's own style first
  var val = elem.style.getPropertyValue(property);
  if (elem.style.getPropertyPriority(property)) return val;

  // Get matched CSS rules
  var rules = getMatchedCSSRules(elem);

  // Iterate rules in reverse order of priority
  for (var i = rules.length; i--;) {
    var r = rules[i];
    var important = r.style.getPropertyPriority(property);

    // Reset value if important or not yet set
    if (val == null || important) {
      val = r.style.getPropertyValue(property);
      if (important) break;
    }
  }

  return val;
}

示例

考虑以下 HTML 代码: CSS 规则:

<div class="b">div 1</div>
<div>

以下 JavaScript 代码使用 getMatchedStyle() 获取宽度值div:

var d = document.querySelectorAll('div');

for (var i = 0; i < d.length; ++i) {
  console.log("div " + (i + 1) + ":  " + getMatchedStyle(d[i], 'width'));
}

结果:

div 1:  100px
div 2:  50%
div 3:  auto
div 4:  44em

以上是如何在 JavaScript 中获取元素的准确 CSS 属性值(包括单位)?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn