使用 JavaScript 修改 CSS 的三種方法
更新日期: 2024 年 11 月 14 日
在網頁開發中,我們經常需要透過 JavaScript 來修改 DOM 元素的 CSS 樣式。
一般來說,最基礎的方式是直接使用 domElement.style.屬性名稱 = 屬性值
,例如:
document.getElementById("myElement").style.color = "blue";
document.getElementById("myElement").style.fontSize = "16px";
然而,這種寫法與我們在 CSS 中的書寫方式不同,當需要修改的樣式變多時,會顯得冗長並且降低可讀性。
因此,JavaScript 提供了其他更靈活的方式,來批量修改樣式,使程式碼更加清晰。
本文將介紹三種更優化的寫法。
方法一:使用 Object.assign
批量修改樣式
介紹 Object.assign
方法
Object.assign()
是一個用來複製物件屬性的 JavaScript 方法,可以將一個或多個物件的屬性複製到目標物件中。
其語法如下:
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target);
// 輸出: { a: 1, b: 4, c: 5 }
console.log(returnedTarget === target);
// 輸出: true
在這裡,我們可以使用 Object.assign
將樣式物件的屬性,批量地賦值給目標元素的 style
屬性,以達到修改樣式的目的。
使用範例
我們可以先建立一個包含 CSS 樣式的物件,然後使用 Object.assign()
將該樣式物件中的屬性批量複製到元素的 style
屬性中。
範例如下:
const styles = {
display: "block",
position: "absolute",
color: "red",
fontSize: "20px"
};
const element = document.getElementById("myElement");
Object.assign(element.style, styles);
這樣就可以一次性地為 myElement
元素添加多個 CSS 樣式,簡化了逐一指定樣式的步驟。
方法二:使用 .style.cssText
直接寫入 CSS 樣式
cssText
的優點
.style.cssText
是另一種方便的方式,它允許直接為一個元素的 style
屬性設置多行的 CSS 樣式文字。
這種方法可以一次性地定義多個樣式,語法結構更接近我們在 CSS 文件中寫樣式的方式。
使用反引號提升可讀性
在設定 .style.cssText
的值時,建議使用反引號(`
)包裹樣式文字,而不是單引號或雙引號。
反引號允許在字符串中使用空行,使樣式結構更符合 CSS 的撰寫格式,增加可讀性。
例如:
document.getElementById("myElement").style.cssText = `
display: block;
position: absolute;
color: blue;
font-size: 18px;
`;
這種方式更接近純 CSS 語法,閱讀起來直觀且易於維護。
方法三:動態添加與切換 CSS 類別
在某些情況下,使用 JavaScript 動態添加或切換 CSS 類別是一個更靈活且強大的方法。
這種方法非常適合,當我們需要在不同情境中切換多組樣式時,避免直接操作 style
屬性,保持樣式與程式碼的分離。
使用 classList
管理類別
JavaScript 中提供的 classList
API 可以輕鬆地新增、移除或切換元素的類別。
以下是一些常用方法:
element.classList.add("className")
:添加一個類別。element.classList.remove("className")
:移除一個類別。element.classList.toggle("className")
:如果類別存在則移除,否則添加該類別。
使用範例
首先,假設我們在 CSS 中已經定義了一個類別 .activeStyle
,包含了我們想要的樣式:
.activeStyle {
display: block;
position: absolute;
color: green;
font-size: 22px;
}
然後,我們可以通過 JavaScript 來動態地切換該類別:
const element = document.getElementById("myElement");
element.classList.add("activeStyle"); // 添加樣式
// 或使用 toggle 來切換樣式
element.classList.toggle("activeStyle"); // 若類別存在則移除,不存在則添加
這種方法可以有效管理樣式,當需要切換或移除多個樣式時顯得更簡便。
結論
Object.assign()
批量添加樣式:適合一次性設定多個樣式屬性,讓程式碼簡潔。.style.cssText
直接定義樣式:用反引號寫樣式讓程式碼結構接近 CSS,適合快速定義多行樣式。- 動態添加與切換 CSS 類別:在多樣式場景下最佳選擇,使 JavaScript 和 CSS 更易於維護和分離。
根據具體需求選擇合適的方法,可以提高程式碼的可讀性和維護性,使 JavaScript 與 CSS 的結合更有效率。