ホームページ >ウェブフロントエンド >jsチュートリアル >ブラウザ間で JavaScript の HTML 要素のスタイル値を取得する方法

ブラウザ間で JavaScript の HTML 要素のスタイル値を取得する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-30 05:50:09816ブラウズ

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 の 2 つのメソッドを使用して計算されたスタイルを取得できます。 DOM 標準 (その他のブラウザ):

document.defaultView.getComputedStyle(element, null).getPropertyValue(propertyName);

2. IE 固有:

element.currentStyle[propertyName];

ただし、標準メソッドではハイフンでつながれたプロパティ名 (例: "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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。