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

CSS:hover伪类失效:悬停door元素时d0文本不显示问题排查

问题原因

你的CSS选择器.door:hover #d0逻辑错误:它试图选中door类元素内部的#d0元素,但实际HTML里,.door和#d0是同级元素(#d0在.door之后的<span class="right">容器内),所以这个选择器根本匹配不到目标元素,导致悬停功能失效。

快速修复方案(无需修改HTML结构)

修改CSS中的hover选择器,利用相邻兄弟选择器+定位到.door之后的.right容器,再选中内部的#d0:

.door:hover + .right #d0 {
  visibility: visible;
}

这个选择器的含义是:当鼠标悬停在.door元素上时,选中它紧挨着的下一个兄弟元素(即带有right类的span)内部的#d0元素,将其可见性设为显示。

其他可选方案

方案1:调整HTML结构(将d0放入door容器)

如果项目允许调整结构,把#d0的div放到.door的包裹容器内,这样你原本的选择器逻辑就能生效:

<div class="center">
  <img class="door" src="https://codehs.com/uploads/15d20f866b54dbed5365a5ea6ffc91f8">
  <div class="overlay hidden" id="d0">…huh</div>
</div>

对应的CSS保持你原来的写法即可:

.door:hover #d0 {
  visibility: visible;
}

方案2:JavaScript控制(适配复杂结构)

如果上述CSS方案不适用,可以用JS监听hover事件手动控制显示/隐藏:

const door = document.querySelector('.door');
const d0 = document.getElementById('d0');

door.addEventListener('mouseover', () => {
  d0.classList.remove('hidden');
});

door.addEventListener('mouseout', () => {
  d0.classList.add('hidden');
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:43:24