我想做的是,当某个div被悬停时,它会影响另一个div的属性。
例如,在这个JSFiddle演示中,当你悬停在#cube上时,它会改变背景色,但我想要的是,当我悬停在#container上时,# cube#会受到影响。
div {
轮廓:1px实心红色;
}
#{容器
宽度:200 px;
高度:30 px;
}
#立方体{
宽度:30 px;
高度:100%;
背景颜色:红色;
}
#立方体:{徘徊
宽度:30 px;
高度:100%;
背景颜色:蓝色;
}
< div id = "容器" >
< div id = "立方”>
< / div >
< / div >
当鼠标悬停在某个元素上时,使用兄弟选择器是对其他元素进行样式化的一般解决方案,但它仅在DOM中其他元素跟随该元素时才有效。当其他元素实际上应该在悬停元素之前时,我们该怎么办?假设我们想实现一个信号条评级小部件,如下所示:
这实际上可以使用CSS flexbox模型轻松完成,只需将flex-direction设置为reverse,这样元素就会以与它们在DOM中的顺序相反的顺序显示。上面的截图就是这样一个小部件,用纯CSS实现的。
95%的现代浏览器都支持Flexbox。
.rating {
display: flex;
flex-direction: row-reverse;
width: 9rem;
}
.rating div {
flex: 1;
align-self: flex-end;
background-color: black;
border: 0.1rem solid white;
}
.rating div:hover {
background-color: lightblue;
}
.rating div[data-rating="1"] {
height: 5rem;
}
.rating div[data-rating="2"] {
height: 4rem;
}
.rating div[data-rating="3"] {
height: 3rem;
}
.rating div[data-rating="4"] {
height: 2rem;
}
.rating div[data-rating="5"] {
height: 1rem;
}
.rating div:hover ~ div {
background-color: lightblue;
}
<div class="rating">
<div data-rating="1"></div>
<div data-rating="2"></div>
<div data-rating="3"></div>
<div data-rating="4"></div>
<div data-rating="5"></div>
</div>