首頁 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板