首頁 >web前端 >css教學 >如何取得初始定義的CSS屬性值(包括百分比和EM單位)?

如何取得初始定義的CSS屬性值(包括百分比和EM單位)?

Susan Sarandon
Susan Sarandon原創
2024-12-15 14:49:26142瀏覽

How Can I Retrieve the Initially Defined CSS Property Values (Including Percentage and EM Units)?

取得初始定義的CSS 屬性值(百分比/EM/PX)

在Web 開發中,擷取原始值至關重要元素的CSS 屬性值,無論任何後續修改為何。當使用百分比或 em 等單位時尤其如此,因為計算值通常會提供 px 值。

問題定義

使用 getCompulatedStyle 等函數時會出現問題或 jQuery 的 css() 來取得目前的 CSS 屬性值。這些方法傳回以像素為單位的值,即使最初設定為其他單位。

解決方案:getMatchedStyle

要解決此問題,可以使用名為 getMatchedStyle 的自訂 JavaScript 函數受僱。此函數迭代元素的 CSS 規則,決定元素樣式和重要規則的優先順序。然後,它會傳回 CSS 規則中定義的初始值。

代碼示例

function getMatchedStyle(elem, property) {
  // Check for element-defined property (highest priority)
  var val = elem.style.getPropertyValue(property);

  // If important, return immediately
  if (elem.style.getPropertyPriority(property)) return val;

  // Get matched CSS rules in descending priority order
  var rules = getMatchedCSSRules(elem);

  // Iterate through rules backwards to ensure correct priority
  for (var i = rules.length; i--;) {
    var r = rules[i];

    // Check if rule is important
    var important = r.style.getPropertyPriority(property);

    // Update value only if not set or if important rule encountered
    if (val == null || important) {
      val = r.style.getPropertyValue(property);

      // Return if important rule encountered
      if (important) break;
    }
  }

  return val;
}

示例用法

考慮以下HTML 和CSS:

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

以下JavaScript程式碼可以用來擷取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%

透過使用getMatchedStyle函數,我們可以精確地擷取CSS屬性值按照最初的定義,無論它們是否被後續樣式修改。

以上是如何取得初始定義的CSS屬性值(包括百分比和EM單位)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn