【问题标题】:Is there a CSS way to get a nav bottom border to align with the hover border?有没有一种 CSS 方法可以让导航底部边​​框与悬停边框对齐?
【发布时间】:2014-07-18 01:30:35
【问题描述】:

我创建了一个具有以下结构的基本导航:

<div class="nav">
  <ul>
    <li><a href="">Home</a></li>
    <li><a href="">Another Link</a></li>
    <li><a href="">Another Link</a></li>
  </ul>
</div>

导航是一个典型的水平导航,lis 浮动到左侧。问题是,每个用户的导航都是动态的,并且导航永远不会占用 100% 的屏幕宽度。
但是,我希望悬停/当前导航链接具有红色下划线,而 站点容器剩余宽度 的其余导航链接具有不同颜色的底部边框。
这是我想要的图片:

我可以通过将默认边框颜色的背景图像附加到导航div 来做到这一点,但我不确定如何使用纯 CSS 来做到这一点。

这可能吗?
谢谢。


编辑:这是 CSS(请注意 CSS 并没有给我预期的效果):

.nav ul {
  border-bottom: #DDD solid 5px;
  list-style: none;
  overflow: hidden;
}

.nav li {
  float: left;
}

.nav a {
  border-bottom: #FFF solid 5px;
  display: block;
  font-size: 16px;
  font-weight: bold;
  padding: 5px 20px;
  text-decoration: none;
}

.nav_link:hover {
  border-bottom: #F00 solid 5px;
  color: #F00;
}

.current_page {
  border-bottom: #F00 solid 5px;
  color: #F00;
}

【问题讨论】:

  • 发布你的 CSS。

标签: html css width border nav


【解决方案1】:

这是一个可能的解决方案。

nav 元素上设置上下边框。然后使用您的a 标签,将它们设置为与非悬停颜色和大小相匹配的底部边框。在a 标记上设置一个负数margin-bottom,等于nav border-bottom 的大小。然后在悬停时更改a 元素的边框颜色。

这是一个显示它的小提琴:http://jsfiddle.net/FNLmf/

*注意:我没有使用浮点数,我使用了inline-block。您可以使用浮点数,但请务必清除您的 nav 元素。

【讨论】:

  • 是的,效果很好。正如您所建议的那样,我必须将 lis 从左浮动更改为 inline-block 以摆脱 overflow: hidden; 以清除浮动。再次感谢您的精彩回答。
  • 太棒了。使用inline-block 需要注意的一件事是每个块之间的空白问题。你可以很容易地找到处理它的方法,所以它看起来像花车一样紧凑和干净。享受吧!
  • 是的,你完全正确。我刚刚为所有不是第一个的lis 添加了 -4px 的左边距。谢谢。
  • 您应该将margin-bottom: -4px 更改为-3.5px; 以正确对齐元素。
猜你喜欢
  • 2015-07-03
  • 2020-01-09
  • 2019-12-24
  • 2015-03-24
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
相关资源
最近更新 更多