1 回答
TA贡献1827条经验 获得超8个赞
通过一些重组,您将能够仅使用 CSS 来实现您想要的效果。在这个实现中,我使用了:not CSS 选择器,并结合了一些多级:hover选择器(因为.container和.child占用相同的空间而起作用)
虽然,只是作为一个建议:利用 flex 的自动增长,并width: 20%;完全删除逻辑。这样,未悬停组件的子组件将占用相等的空间,悬停的子组件仍将增长到 80% 的宽度。这将允许您动态添加更多项目,而无需更改硬编码的 CSS。
.container {
display: flex;
}
.child {
width: 50%;
height: 150px;
padding: 10px;
transition: all 0.5s;
}
.child--red {
background-color: rgba(227, 29, 103, 1);
}
.container:hover .child--red:not(:hover) {
background-color: rgba(227, 29, 103, 0.4);
}
.child--green {
background-color: rgba(40, 251, 202, 1);
}
.container:hover .child--green:not(:hover) {
background-color: rgba(40, 251, 202, 0.4);
}
.container:hover .child:not(:hover) span {
display: none;
}
.container:hover .child {
width: 20%;
}
.container:hover .child:hover {
width: 80%;
}
<div class="container">
<div class="child child--green">
<span>This content will show up directly in its container.</span>
</div>
<div class="child child--red">
<span>This content will show up directly in its container.</span>
</div>
</div>
添加回答
举报