首页 > web前端 > css教程 > 如何使用纯 JavaScript 检索 HTML 元素的 CSS 样式值?

如何使用纯 JavaScript 检索 HTML 元素的 CSS 样式值?

Linda Hamilton
发布: 2025-01-05 07:40:38
原创
870 人浏览过

How to Retrieve an HTML Element's CSS Style Value Using Pure JavaScript?

在 JavaScript 中访问 HTML 元素样式值

人们可能会遇到需要从已在 JavaScript 中定义的 HTML 元素中检索样式的情况。 CSS 样式表。例如,考虑以下 HTML 和 CSS 代码:

<style>
  #box { width: 100px; }
</style>
<body>
  <div>
登录后复制

仅使用纯 JavaScript 而不使用任何库,如何检索 width 属性的值?以下尝试通常会导致接收空白值:

alert(document.getElementById("box").style.width);
alert(document.getElementById("box").style.getPropertyValue("width"));
登录后复制

这些尝试会失败,因为它们仅适用于元素 style 属性中定义的内联样式。要检索计算样式,需要采用不同的方法。

跨浏览器兼容性

由于浏览器之间的差异,访问计算样式提出了挑战。 Internet Explorer 使用 element.currentStyle 属性,而其他浏览器则遵循 DOM Level 2 标准,使用 document.defaultView.getCompulatedStyle。此外,IE 使用驼峰式命名法(例如“maxHeight”)以不同方式处理具有两个或多个单词的属性名称。其他浏览器希望用破折号来分隔单词(例如“max-height”)。

跨浏览器函数

为了解决这些跨浏览器差异,以下函数可以使用:

function getStyle(el, styleProp) {
  var value, defaultView = (el.ownerDocument || document).defaultView;
  if (defaultView &amp;&amp; defaultView.getComputedStyle) {
    styleProp = styleProp.replace(/([A-Z])/g, "-").toLowerCase();
    return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
  } else if (el.currentStyle) {
    styleProp = styleProp.replace(/\-(\w)/g, function(str, letter) {
      return letter.toUpperCase();
    });
    value = el.currentStyle[styleProp];
    if (/^\d+(em|pt|%|ex)?$/i.test(value)) { 
      return (function(value) {
        var oldLeft = el.style.left, oldRsLeft = el.runtimeStyle.left;
        el.runtimeStyle.left = el.currentStyle.left;
        el.style.left = value || 0;
        value = el.style.pixelLeft + "px";
        el.style.left = oldLeft;
        el.runtimeStyle.left = oldRsLeft;
        return value;
      })(value);
    }
    return value;
  }
}
登录后复制

此函数提供跨浏览器兼容性,用于访问计算样式、处理标准行为和 IE 特定行为。请注意,它可能无法处理所有情况,例如颜色,不同浏览器返回的颜色不同。

以上是如何使用纯 JavaScript 检索 HTML 元素的 CSS 样式值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板