【发布时间】:2013-01-30 11:10:48
【问题描述】:
我在opacity: 0; 时遇到了一些悬停在项目上的问题,但是因为它们仍然存在于空间中(只是不可见),与display: none; 不同,附加到该对象的任何悬停事件仍然会发生.
无法真正发布我正在使用的代码,但我设置了一个fiddle,并提供了更多解释来模拟它。就像一个注释,我宁愿不使用任何 Javascript 来解决它,尽量保持纯 HTML/CSS。我还从下面的小提琴中发布了 HTML 和 CSS:
HTML:
<div class="container">
<div class="secondary-container">
.opacity-0 fills this box.
<div class="opacity-0"></div>
<div class="on-hover">Hello, world!</div>
</div>
</div>
CSS:
body {
font-family: sans-serif;
}
.container {
width: 200px;
height: 200px;
background-color: blue;
}
.container .secondary-container {
width: 100px;
height: 100px;
margin: 0 auto;
background-color: white;
padding: 5px;
box-sizing: border-box;
}
.container .secondary-container .opacity-0 {
width: 100px;
height: 100px;
background-color: red;
margin-top: -41px;
margin-left: -5px;
opacity: 0;
}
.on-hover {
display: none;
color: white;
}
.container .secondary-container .opacity-0:hover ~ .on-hover {
display: block;
}
以及解释:
将鼠标悬停在白色方块上,文字“Hello, world!”应该显示(来自 div.on-hover)。但是,正如 CSS 中明确指出的那样,您实际上是在 .opacity-0 上悬停。
我需要能够将鼠标悬停在 .opacity-0 上,并且当不透明度为 0 时(即对象不可见,但仍存在于空间中),悬停事件不会触发。当不透明度为 1 并且您将鼠标悬停在 .opacity-0 上时,悬停事件会照常进行。最好不要使用 Javascript。
希望一切都有意义,很高兴回答有关它的任何问题,因为我意识到我可能没有很好地解释这一点。
感谢您的帮助:)
【问题讨论】:
-
太混乱了……这不能仅用 CSS 完成
-
pointer-events: none是您想要的吗?请注意,它在 IE 或 Opera 中不起作用。