我的div有课:
.cls { background-color: #ff0000; }
.cls:hover { background-color: #0000ff; }
我在javascript
时:
mydiv.style.backgroundColor = "#555555";
它有效,但悬停不再起作用了!
我没有在网上找到有关此行为的更多信息,这是正常的吗?
如何修复可能是另一个问题,但如果你想告诉......
答案 0 :(得分:4)
当你从javascript中提供 background-color 时,它会被应用为内联样式,如果你想提供悬停效果,则将!important 应用于它。
.cls { background-color: #ff0000; }
.cls:hover { background-color: #0000ff !important; }
答案 1 :(得分:3)
非常有趣,虽然这是奇怪的行为。
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>
现在,我正在应用background-color
中的inline
,此处它还优先于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>
<强>更新强>
正如@Mr_Green所说,添加!important
属性不是最佳做法,而是我们可以添加一个类也将解决您的问题。
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>
希望这会有所帮助:)
答案 2 :(得分:0)
我认为它会起作用 在Javascript中将类'cls2'赋予mydiv 和
.cls:not(.cls2) { background-color: #ff0000; }
.cls2 { background-color:#555555; }
.cls:hover { background-color: #0000ff; }
答案 3 :(得分:0)
可以添加onmouseenter,onmouseleave事件监听器来实现悬停。
答案 4 :(得分:0)
使用javascript更改背景颜色将覆盖该元素的样式。
如果你真的想用javascript添加悬停效果,你可以参考这篇文章:Change :hover CSS properties with JavaScript
我建议您将JQuery用于这些类型的代码。
答案 5 :(得分:0)
检查代码段。它的工作
.cls{ background-color: #ff0000; height:100px; width:100px; }
.cls:hover { background-color: #0000ff !important; }
<div class="cls">
</div>
2016-11-22 12:04 PM