非常有趣的,雖然它是怪異的行爲。
var elem = document.getElementsByClassName("cls")[0];
elem.style.backgroundColor = "yellow"; // It'll become inline property
.cls {
width: 100px;
height: 100px;
background-color: #ff0000;
}
.cls:hover { background-color: #0000ff; }
<div class="cls"></div>
當我們從Javascript應用background-color
,它會成爲內聯財產,並採取高優先於其他性質,甚至壓倒一切的background-color
從hover
效果。
對於POC,看看這個
.cls {
width: 100px;
height: 100px;
background-color: #ff0000; }
.cls:hover { background-color: #0000ff; }
<div class="cls" style="background-color: yellow"></div>
現在,我在申請從inline
background-color
在這裏也,它是通過css
風格以高優先級。
解決這個原因,加上!重要上hover
var elem = document.getElementsByClassName("cls")[0];
elem.style.backgroundColor = "yellow";
.cls {
width: 100px;
height: 100px;
background-color: #ff0000;
}
.cls:hover { background-color: #0000ff !important; }
<div class="cls"></div>
UPDATE
正如@Mr_Green說,!important
屬性不是最好的做法,相反,我們可以增加一個班也將解決您的proble米
var elem = document.getElementsByClassName("cls")[0];
elem.classList.add('secondary');
.cls {
width: 100px;
height: 100px;
background-color: #ff0000;
}
.secondary {
background-color: #000000;
}
.secondary:hover {
background-color: #0000ff;
}
<div class="cls"></div>
希望這有助於:)
可以youm添加HTML代碼? –
這很正常 - 請參閱[本文檔](https://developer.mozilla.org/en/docs/Web/CSS/Specificity)瞭解爲什麼 –
一個簡單的解決辦法是在懸停背景顏色上設置「!important」標誌 –