【发布时间】:2011-10-29 17:06:31
【问题描述】:
我有一个带有图像的导航栏,如下所示:
<ul>
<li class="me">
<span class="cont"><img src="dummy.png" /></span>
</li>
<li class="me">
<span class="cont"><img src="dummy.png" /></span>
</li>
</ul>
在将鼠标悬停在列表项上时,我想更改背景颜色以覆盖跨度和图像,如下所示:
.me {background-color: none;}
.me:hover {background-color: rgba(150,150,150,0.5);}
问题是,图像没有被覆盖...这是因为背景实际上是...子元素所在的“背景”吗?如果是这样,我怎么能用纯 CSS 实现这种效果?
编辑 - 解决方案
这适用于我原来的 HTML 结构:
<ul>
<li>
<a href="" class="ui-btn">
<span class="ui-btn-inner"> /* CONTAINS IMAGE AS BACKGROUND */
<span class="ui-btn-text">text</span> /* GETS BACKGROUND */
<span class="ui-icon"></span>
</span>
</a>
</li>
</ul>
“负逻辑”:如果我将背景分配给列表项,它位于所有子元素的后面,所以我想我需要将背景分配给一个元素,该元素是包含 img 的元素的子元素才能让它出现高于所有项目。 span ui-btn-inner 包含图像,因此在 span ui-btn-text 上设置 :hover 背景会使其显示在图像上方...很奇怪,但可以。
【问题讨论】:
-
是背景在子元素后面
-
应该是
<img src="dummy.png" alt="Picture of a dummy.">。 -
@WTP: 正确,缩短太多... :-)
-
@tw16:我无法隐藏图像,因为悬停应该只是在列表项上添加阴影
标签: css background hover