You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CSS grid-area制作响应式菜单 如何实现hover时其余所有div变透明

问题原因

你当前使用的~是CSS后续兄弟选择器,仅能匹配到当前元素之后的同级节点,所以排在hover子项前面的元素不会被选中,自然不会触发透明度变化。

修复方案

调整hover的触发逻辑,从「当前子项hover时控制其他兄弟」改为「父容器hover时默认所有子项半透,单独给当前hover的子项设置完全不透明」,修改对应CSS规则即可。

把你现有代码里的这两段规则:

.grid-container > div:hover {
    opacity: 1;
    padding: 50px;
}
.grid-container > div:hover ~ [class^="item"] {
    opacity: 0.3;
}

替换为:

/* 父容器被hover时,所有子项默认透明度0.3 */
.grid-container:hover > div {
    opacity: 0.3;
}
/* 当前被hover的子项单独保持完全不透明,保留放大效果 */
.grid-container > div:hover {
    opacity: 1;
    padding: 50px;
}

修改后无需调整HTML结构,所有非hover的grid子项都会自动变为0.3透明度,和元素在HTML中的排列顺序无关。

内容的提问来源于stack exchange,提问作者Cal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:06:05