首页 > web前端 > js教程 > 如何跨浏览器检索 JavaScript 中的 HTML 元素样式值?

如何跨浏览器检索 JavaScript 中的 HTML 元素样式值?

Linda Hamilton
发布: 2024-11-30 05:50:09
原创
752 人浏览过

How to Retrieve HTML Element Style Values in JavaScript Across Browsers?

在 JavaScript 中检索 HTML 元素样式值

对于通过 style 标签定义样式的元素,如下所示:

<style>
#box {
  width: 100px;
}
</style>

<div>
登录后复制

要使用 JavaScript 检索样式值,请单独使用 element.style 属性还不够,因为它只提供内联或 JavaScript 定义的样式。

计算样式

我们需要访问元素的计算样式 ,它表示从父元素继承并考虑应用的 CSS 规则后应用于其的实际样式。在 JavaScript 中,我们可以使用两种方法获取计算样式:

1. DOM 标准(其他浏览器):

document.defaultView.getComputedStyle(element, null).getPropertyValue(propertyName);
登录后复制

2. IE 特定:

element.currentStyle[propertyName];
登录后复制

但是,IE 使用驼峰命名法属性名称(例如“font-Size”),并且可能返回非像素单位的大小,而标准方法使用连字符属性名称(例如,“字体大小”)并始终提供像素

跨浏览器解决方案

要以跨浏览器兼容的方式检索计算样式,请使用以下函数:

function getStyle(element, property) {
  var value, defaultView = (element.ownerDocument || document).defaultView;
  // Sanitize property name for different browsers
  property = property.replace(/([A-Z])/g, "-").toLowerCase();

  if (defaultView && defaultView.getComputedStyle) {
    return defaultView.getComputedStyle(element, null).getPropertyValue(property);
  } else if (element.currentStyle) {
    // Convert camelCase property name to hyphenated
    property = property.replace(/\-(\w)/g, function(str, letter) {
      return letter.toUpperCase();
    });

    value = element.currentStyle[property];
    if (/^\d+(em|pt|%|ex)?$/i.test(value)) {
      return (function(value) {
        var oldLeft = element.style.left, oldRsLeft = element.runtimeStyle.left;
        element.runtimeStyle.left = element.currentStyle.left;
        element.style.left = value || 0;
        value = element.style.pixelLeft + "px";
        element.style.left = oldLeft;
        element.runtimeStyle.left = oldRsLeft;
        return value;
      })(value);
    }
    return value;
  }
}
登录后复制

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

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