【发布时间】:2011-10-02 23:43:02
【问题描述】:
我有一个基于 css 的水平下拉菜单,效果非常好,但我无法添加一个效果,该效果在代表用户当前所在页面的项目上添加上边框。这是下拉菜单的 HTML 代码:
<ul id="browse">
<li>
<a href="/comedy/">Comedy</a>
<ul>
<li><a href="/caddyshack/">Caddyshack</a></li>
<li><a href="/backtoschool/">Back to School</a></li>
<ul>
</li>
<li>
<a href="/80s/">80s</a>
<ul>
<li><a href="/diehard/">Die Hard</a></li>
<li><a href="/overboard/">Overboard</a></li>
<ul>
</li>
</ul>
这就是我想要的:
将鼠标悬停在项目上会更改其背景颜色,以及下拉菜单的背景(嵌套的 ul 元素)
在项目的活动页面上,该项目的顶部应该有一个 2 像素高的彩色边框。
为了清楚起见,下拉菜单已经正常工作,我已经可以识别“活动”菜单项。我似乎无法弄清楚如何结合更改悬停时的背景颜色和在活动菜单项上添加边框顶部而不以某种方式弄乱菜单的样式(在悬停时留下 2px 高的空白空间,或者让悬停背景属性覆盖活动项目上的边框顶部属性)
我还应该补充一下,请仅使用 CSS 解决方案。
我们将不胜感激。
【问题讨论】:
-
所以,你想要实现的是让悬停的项目背景颜色发生变化,当你在页面上时(例如:在“顽固”页面上),它的列表项是否已经有顶部边框?
-
例如 .active {border-top: 2px solid red;} 有什么问题?如果您有间距问题,请改用 .active {outline-top: 2px solid red;}!
-
@Jawad 因为只在该项目上添加边框会将其推到其他没有边框的项目下方。我需要菜单保持原样。
-
@Jawad 还注意到轮廓在所有方面都是相同的。与边框相比,没有'outline-top' 或'outline-left' 属性。 w3.org/TR/CSS2/ui.html
-
@rollingstone:没有实际代码很难说。也许您可以在其中腾出空间,使边框不会“推动”其他项目。或者按照建议,您可以使用 outline 属性。