我想做的是,当某个div被悬停时,它会影响另一个div的属性。

例如,在这个JSFiddle演示中,当你悬停在#cube上时,它会改变背景色,但我想要的是,当我悬停在#container上时,# cube#会受到影响。

div { 轮廓:1px实心红色; } #{容器 宽度:200 px; 高度:30 px; } #立方体{ 宽度:30 px; 高度:100%; 背景颜色:红色; } #立方体:{徘徊 宽度:30 px; 高度:100%; 背景颜色:蓝色; } < div id = "容器" > < div id = "立方”> < / div > < / div >


当前回答

警告:如果你能使用CSS:使用CSS没有Javascript!

如果你想选择一个位置未知或无法到达的元素,你可以使用JavaScript。

const cube = document.getElementById('cube') const container = document.getElementById('container') 多维数据集。addEventListener('mouseover', () => container.style.backgroundColor = "blue") 多维数据集。addEventListener('mouseleave', () => container.style.backgroundColor = "white") div { 轮廓:1px实心红色; 宽度:200 px; 高度:30 px; } #立方体{ 背景颜色:红色; } <大> < div id = "容器" > < / div > < /主要> < div id = "立方”> < / div >

其他回答

警告:如果你能使用CSS:使用CSS没有Javascript!

如果你想选择一个位置未知或无法到达的元素,你可以使用JavaScript。

const cube = document.getElementById('cube') const container = document.getElementById('container') 多维数据集。addEventListener('mouseover', () => container.style.backgroundColor = "blue") 多维数据集。addEventListener('mouseleave', () => container.style.backgroundColor = "white") div { 轮廓:1px实心红色; 宽度:200 px; 高度:30 px; } #立方体{ 背景颜色:红色; } <大> < div id = "容器" > < / div > < /主要> < div id = "立方”> < / div >

#imageDiv:hover  #detailDiv
{
    z-index: -999 !important;
}

here

#imageDiv是第一个要悬停的div

#detailDiv是css在悬停时应用的第二个div

如果我把鼠标悬停在第一个div上,那么zindex就会赋值给第二个div

对我有用

在这个例子中,你可以使用:

#container:hover #cube {
    background-color: yellow;   
}

这个例子只适用于立方体是容器的子容器。对于更复杂的场景,需要使用不同的CSS或JavaScript。

当鼠标悬停在某个元素上时,使用兄弟选择器是对其他元素进行样式化的一般解决方案,但它仅在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>

除了在其他答案中已经提供的通用选择器之外,现在可以在没有父/子或兄弟姐妹关系的情况下依赖:has()。

这里有一个例子:

.box { 宽度:200 px; 比例:1; 显示:inline-block; 边框:1px纯红色; } .box > div { 保证金:5 px; 高度:100%; 边框:2px纯绿色; 光标:指针; } /*当div1悬停时,使div2蓝色*/ Body:has(#div1:hover) #div2 { 背景:蓝色; } /*当div2悬停时,使div1紫色*/ Body:has(#div2:hover) #div1 { 背景:紫色; } < div class = "盒子" > < div id = " div1 " > < / div > < / div > < div class = "盒子" > < div id = " div2 " > < / div > < / div >

如你所见,我们可以通过悬停div2来影响div1,反之亦然。