JavaScript >> Javascript 文檔 >  >> Tags >> CSS

如何使用 JavaScript 從元素中獲取 CSS 樣式

在 JavaScript 中,有時您可能希望通過內聯樣式或外部樣式表檢索應用於元素的 CSS 樣式。有多種方法可以做到這一點,具體取決於您是要獲取內聯樣式還是渲染樣式。

獲取內聯樣式

在 vanilla JavaScript 中,DOM 樣式屬性用於使用 style 獲取應用於 HTML 元素的樣式 屬性。

假設我們有以下 HTML 元素:

<button id="clickMe" style="color: red; font-weight: bold;">Click Me</button>

下面的例子展示瞭如何從上面的例子中獲取樣式信息:

const btn = document.getElementById('clickMe');
 
// pint color & font weight properties
console.log(btn.style.color); // red
console.log(btn.style.fontWeight); // bold

然而,style 屬性只有 適用於使用 style 定義的內聯樣式 屬性。如果您嘗試訪問未定義為內聯樣式規則的屬性,讓我們說 backgroundColor , 一個 null 將返回值:

console.log(btn.style.backgroundColor); // null

style 屬性對於獲取來自其他地方的樣式信息並不是很有用,例如使用 <style> 定義的樣式規則 元素或外部樣式表。

獲取渲染樣式

要獲取用於呈現 HTML 元素的實際 CSS 屬性值,您可以使用 getComputedStyle() 方法。此方法適用於所有內容:內聯樣式、外部樣式表和瀏覽器默認值。

假設您有以下嵌入式 <style> 為上述按鈕定義樣式規則的元素:

<style>
    button {
        background-color: yellow;
        text-align: center;
        height: 20px;
        width: 100px;
    }
</style>

getComputedStyle() 方法總是在 window 上調用 以元素為參數,並返回一個屬性對象:

const btn = document.getElementById('clickMe');
 
// get all rendered styles
const styles = window.getComputedStyle(btn);

現在您可以像使用 style 一樣直接訪問任何 CSS 屬性 財產。例如,要訪問 background-color ,你可以這樣做:

const backgroundColor = styles.backgroundColor; // rgb(255, 255, 0)

無論是否定義,要獲取元素的渲染高度和寬度,只需執行以下操作:

const height = styles.height; // 20px
const width = styles.width; // 100px

或者,您也可以使用 getPropertyValue() 樣式對像上的方法來訪問 CSS 屬性。它接受實際 CSS 屬性的名稱,而不是用於 JavaScript 的名稱:

const fontWeight = styles.getPropertyValue('font-weight'); // 700

getComputedStyle() 方法對於獲取瀏覽器用來渲染元素的實際 CSS 屬性非常有用。它適用於所有現代和舊瀏覽器,包括 IE 9 及更高版本。

最後,getComputedStyle() 方法僅適用於獲取樣式。您不能使用它為 HTML 元素設置特定樣式。要設置 CSS 屬性,您應該始終使用 DOM 樣式屬性,我在之前的文章中已經解釋過。

從偽元素中獲取樣式

CSS 偽元素對元素的部分樣式非常有用,無需額外的 HTML 元素。

要從偽元素中獲取樣式信息,您需要將偽元素的名稱作為第二個參數傳遞給 getComputedStyle() 方法。

假設我們有以下 <p> 元素:

<p class="tip">Learn JavaScrit for free!</p>

這是 CSS ::first-letter 應用於上述段落的偽元素:

.tip::first-letter {
  color: green;
  font-size: 22px;
}

檢索 .tip::first-letter 的顏色屬性 ,您應該使用以下 JavaScript 代碼片段:

const tip = document.querySelector('.tip');

// retrieve all styles
const styles = window.getComputedStyle(tip, '::first-letter');

// get color
console.log(styles.color); // rgb(0, 128, 0)

總結

在本文中,我們研究了使用 JavaScript 從元素中獲取 CSS 樣式的不同方法。你應該使用:

  • 使用 style 檢索應用於元素的內聯樣式的 DOM 樣式屬性 屬性。
  • window.getComputedStyle() 通過 <style> 檢索應用於元素的計算樣式的方法 元素和外部樣式表。要獲取偽元素 CSS 樣式,您需要將偽元素的名稱作為第二個參數傳遞。

Tutorial JavaScript 教程
  1. 使用瀏覽器的緩存api

  2. 直接包含文本的元素的jQuery選擇器?

  3. Chrome 擴展程序:獲取上次使用的選項卡

  4. SnowFS ❄️ 讓我們為圖形項目帶來版本控制

  5. 字符串方法

  6. getMinutes() 0-9 - 如何顯示兩位數?

  7. 使用 Gatsby 和 gitconnected API 構建一個很棒的開發者組合網站

  1. 對象介紹第 2 部分:方法

  2. 如何為您的項目選擇合適的 JavaScript 框架?

  3. 如何將索引傳遞給子函數

  4. 簡單的純Javascript拖動控制器滑塊

  5. 動畫標籤欄

  6. 如何等待 2 個動作來調度另一個? - Redux 傳奇

  7. 從 ReactJS 和 Angular 的角度來看函數式編程

  1. 什麼是 JavaScript 運行時?

  2. JavaScript 獲取查詢字符串 |當前網址示例

  3. 使用 TogetherJS 和 CreateJS 創建多人遊戲

  4. JAMStack Fun:結合 StackBit、Forestry、Netlify、Gatsby、Hasura、Glitch