使用 JavaScript 獲取和設置 CSS 屬性的三種方法

前提說明:

JavaScript 使用駝峰式版本的屬性與 CSS 中使用的屬性一一對應。

例如,CSS 中的 background-image 就是 JavaScript 中的 backgroundImage。CSS 中的 font-weight 屬性在 JavaScript 中是 fontWeight。

詳細可查看 Mozilla 開發(fā)者網(wǎng)絡提供了可用屬性及其 JavaScript 對應項的全面列表

Element.style 屬性

您可以使用 Element.style 屬性獲取和設置元素的內(nèi)聯(lián)樣式。

Element.style 屬性是一個只讀對象。您可以使用 camelCase 樣式名稱作為對象的屬性來獲取和設置其上的單個樣式屬性 。

<p class="elem" style="background-color: plum; color: white;">
  Hello World!
</p>
let elem = document.querySelector('.elem')

// 如果這個樣式?jīng)]有直接在元素上設置為內(nèi)聯(lián)樣式,它將返回一個空字符串
let bgColor = elem.style.backgroundColor // "plum"
let fontWeight = elem.style.fontWeight // ""

// 設置 background-color 樣式屬性
elem.style.backgroundColor = 'purple'

您還可以使用 Element.style.csstext 屬性在元素本身上獲取和設置整個內(nèi)聯(lián) style 屬性的字符串表示。

// 獲取元素的樣式
let styles = sandwich.style.cssText // "background-color: green; color: white;"

// 完全替換元素上的內(nèi)聯(lián)樣式
sandwich.style.cssText = 'font-size: 2em; font-weight: bold;'

// 添加額外的樣式
sandwich.style.cssText += 'color: purple;'

window.getComputedStyle() 方法

window.getComputedStyle() 方法獲取元素的實際計算樣式。這會影響瀏覽器默認樣式以及頁面上使用的外部樣式表。

let elem = document.querySelector('.elem')
let bgColor = window.getComputedStyle(elem).backgroundColor

這是只讀的,不能用于實際修改元素的樣式。

向文檔添加樣式

Element.style 屬性對于向特定元素添加內(nèi)聯(lián)樣式很有用。

但是,如果您想為所有匹配特定選擇器的元素添加樣式怎么辦?您可以遍歷每個匹配元素并使用 Element.style 屬性添加樣式。

let elems = document.querySelectorAll('.elem')

for (let el of elems) {
  el.style.backgroundColor = 'rebeccapurple'
  el.style.color = 'white'
}

或者,您可以通過創(chuàng)建一個 style 元素并將其附加到 DOM 中來直接向文檔中添加 CSS。

首先,使用 document.createElement() 方法創(chuàng)建一個 style 元素。然后,使用 Element.textContent 屬性將您的 CSS 添加到其中。

最后,您可以使用 Element.append() 方法將其注入到文檔中。我喜歡附加到 document.head,但 document.body 也可以。

let style = document.createElement('style')
style.textContent =
  `.elem {
    background-color: rebeccapurple
    color: white;
  }`
document.head.append(style)
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容