【问题标题】:CSS Drop Down Menu with Hover Effect带有悬停效果的 CSS 下拉菜单
【发布时间】: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 属性。

标签: html css


【解决方案1】:

对于背景颜色,比较简单,使用类似这样的代码即可:

#browse a:hover {
     background-color: fuchsia; /*Whatever your background color is*/
}

至于边框效果,这在语义上有点难做,但我觉得this article on CSS specificity 可以解决问题。基本上,它涉及在您的正文中添加一个id,然后在 CSS 中引用该id,以便只有特定页面会受到影响。

编辑:如果您遇到影响布局的上边框问题(我不知道导航的方向),请尝试通过边框的大小(在本例中为 2px)以保持整个框高度。如果您没有任何边距/填充,请尝试负边距。

【讨论】:

  • 感谢@nightfirecat。我已经有了背景颜色并使用 id 来选择活动项目,问题在于您添加的编辑。这是一个有趣的方法,将尝试减少 padding-top 并看看效果如何。
  • 很好,减少活动元素上的 padding-top 以抵消border-top 就像一个魅力!谢谢!知道它必须是这样简单的事情......
  • 是的,没问题 - 通常最难弄清楚的事情就是简单的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 2020-09-15
相关资源
最近更新 更多