在悬停时更改不相关的 div
Changing an unrelated div on hover
是否有纯粹的 (S)CSS 解决方案来更改悬停时不相关的(即不是兄弟姐妹或 child)div,正如我试图在下面的代码?
.blue,.green {
width: 5rem;
height: 3rem;
margin: 1rem;
}
.blue {
background-color: blue;
}
.green {
background-color: green;
&:hover {
background-color: lightgreen;
}
&:hover .blue {
background-color: lightblue; // trying to effect this change
}
}
<div>
<div class="blue" />
</div>
<div>
<div class="green" />
</div>
这里是 CodePen.
更新:@alekskorovin 的回复非常出色,值得点赞!
在 CSS 中,可以使用相同的父级和公共 类 和 :not
选择器以及 CSS 变量。据我所知,事情是当您将鼠标悬停在某些项目上时设置一些通用属性。如果可以有一个共同的父元素,你可以考虑这个例子 (https://codepen.io/alekskorovin/pen/bGobvzG):
:root {
--bg: rgba(255, 255, 255, 0.3);
}
.one {
background: blue;
}
.two {
background: green;
}
.common {
margin: 1rem;
border: solid 0.1rem grey;
position: relative;
}
.common:before {
content: '';
position: absolute;
width: 100%;
height: 100%;
background: var(--bg);
}
.parent:not(div:hover) {
--bg: rgba(255, 255, 255, 0);
}
<div class="parent">
<article><div class="one common">One</div></article>
<article><div class="two common">Two</div></article>
</div>
是否有纯粹的 (S)CSS 解决方案来更改悬停时不相关的(即不是兄弟姐妹或 child)div,正如我试图在下面的代码?
.blue,.green {
width: 5rem;
height: 3rem;
margin: 1rem;
}
.blue {
background-color: blue;
}
.green {
background-color: green;
&:hover {
background-color: lightgreen;
}
&:hover .blue {
background-color: lightblue; // trying to effect this change
}
}
<div>
<div class="blue" />
</div>
<div>
<div class="green" />
</div>
这里是 CodePen.
更新:@alekskorovin 的回复非常出色,值得点赞!
在 CSS 中,可以使用相同的父级和公共 类 和 :not
选择器以及 CSS 变量。据我所知,事情是当您将鼠标悬停在某些项目上时设置一些通用属性。如果可以有一个共同的父元素,你可以考虑这个例子 (https://codepen.io/alekskorovin/pen/bGobvzG):
:root {
--bg: rgba(255, 255, 255, 0.3);
}
.one {
background: blue;
}
.two {
background: green;
}
.common {
margin: 1rem;
border: solid 0.1rem grey;
position: relative;
}
.common:before {
content: '';
position: absolute;
width: 100%;
height: 100%;
background: var(--bg);
}
.parent:not(div:hover) {
--bg: rgba(255, 255, 255, 0);
}
<div class="parent">
<article><div class="one common">One</div></article>
<article><div class="two common">Two</div></article>
</div>