1、直接設置style對象(內聯樣式)
使用JavaScript設置元素樣式的最簡單方法是使用style屬性。在我們通過JavaScript訪問的每個HTML元素時都有一個 style對象。此對象允許我們指定CSS屬性並設置其值。例如,這是設置id 值為demo的HTML元素的字體顏色、背景顏色、的樣式:
var myElement = document.querySelector("#demo");
// 把顏色設置成紫色
elem.style.color = 'purple';
// 將背景顏色設置為淺灰色
elem.style.backgroundColor = '#e5e5e5';
// 將高度設置為150 px
elem.style.height = '150px';
注:JavaScript使用駝峰原則(例:backgroundColor)而不是短划線(background-color)表示屬性名稱
該style屬性在元素上添加樣式內聯:
<div id="demo" style="color: purple; height: 150px;">
Hello, world!
</div>
但是,這可能會使我們的標記變得非常混亂。瀏覽器渲染的性能也較差。
2、設置style屬性--添加全局樣式
另一種方法是將<style></style>里帶有CSS屬性的元素注入DOM。將在設置應用於一組元素而不僅僅是一個元素的樣式時,這非常有用。
首先,我們將創建一個樣式元素。
var style = document.createElement('style');
接下來,我們將通過innerHTML來給<style>添加我們的樣式。
var style = document.createElement('style');
style.innerHTML =
'.some-element {' +
'color: purple;' +
'background-color: #e5e5e5;' +
'height: 150px;' +
'}';
最后,我們將把樣式注入DOM。為此,我們將獲取script我們在DOM中找到的第一個標記,並用它insertBefore()來添加我們的style標記。
// 創建我們的樣式表
var style = document.createElement('style');
style.innerHTML =
'.some-element {' +
'color: purple;' +
'background-color: #e5e5e5;' +
'height: 150px;' +
'}';
// 獲取第一個腳本標記
var ref = document.querySelector('script');
// 在第一個腳本標簽之前插入新樣式
ref.parentNode.insertBefore(style, ref);
3、使用JavaScript添加和刪除類:add()和remove()
這種方法涉及添加和刪除類值,這反過來又會改變應用的樣式規則。例如,假設我們有一個樣式規則,如下所示:
.disableMenu {
display: none;
}
在HTML中,您有一個id為 dropDown的菜單:
<ul id="dropDown">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
現在,如果我們想將.disableMenu 樣式規則應用於此元素中,我們需要做的就是將disableMenu作為類值添加到dropDown元素:
<ul class="disableMenu" id="dropDown">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
<li>Six</li>
</ul>
要使用JavaScript完成相同的結果,我們將使用classList API。此API使得從HTML元素添加或刪除類值變得非常簡單。
要將disableMenu類名添加到我們的dropDown元素,請在HTML元素的classList屬性上使用add()方法:
var theDropDown = document.querySelector("#dropDown");
theDropDown.classList.add("disableMenu");
要刪除disableMenu類名,我們可以調用classList API的remove()方法:
var theDropDown = document.querySelector("#dropDown");
theDropDown.classList.remove("disableMenu");
