function highlight1(){
document.getElementById("div1").classList.add("red");
}
function highlight2(){
document.getElementById("div2").classList.add("red");
}
function highlight3(){
document.getElementById("div3").classList.add("red");
}
div{
display: inline-block;
border: 1px solid black;
height: 100px;
width: 100px;
}
div:hover{
background: yellow;
}
.red{
background: red;
}
<div id="div1" onclick="highlight1()">Division</div>
<div id="div2" onclick="highlight2()">Division</div>
<div id="div3" onclick="highlight3()">Division</div>
我是CSS新手,对代码有两个疑问。
答案 0 :(得分:2)
您的<div id="div1" onclick="highlight1()">Division</div>
<div id="div2" onclick="highlight2()">Division</div>
<div id="div3" onclick="highlight3()">Division</div>
使:hover
悬停,甚至div
.red
悬停(黄色)而不是红色。如果需要,您也可以将悬停的div
divs设为红色。
如果您一次只希望变红,则可以在使用.red
之前从所有div中删除.red
。
使用类比使用单独的classList.add
更合适,因为元素是集合的组成部分,而不是以某种方式唯一:
id
const divs = document.querySelectorAll('.box');
function reset(i) {
divs.forEach(div => div.classList.remove("red"));
divs[i].classList.add('red');
}
.box {
display: inline-block;
border: 1px solid black;
height: 100px;
width: 100px;
}
.box:hover {
background: yellow;
}
.red,
.red:hover {
background: red;
}
答案 1 :(得分:0)
您可以通过应用div.red:hover
来做到这一点,实际上是通过优先使用div:hover
的{{1}}覆盖div.red:hover
div.red:hover
function highlight1(){
document.getElementById("div1").classList.add("red");
}
function highlight2(){
document.getElementById("div2").classList.add("red");
}
function highlight3(){
document.getElementById("div3").classList.add("red");
}
div{
display: inline-block;
border: 1px solid black;
height: 100px;
width: 100px;
}
div:hover{
background: yellow;
}
div.red:hover,.red{
background: red;
}