引导悬停移动所有链接

Posted

技术标签:

【中文标题】引导悬停移动所有链接【英文标题】:bootstrap hover moving all the links 【发布时间】:2018-05-29 01:23:41 【问题描述】:

我正在玩引导程序,但遇到了一些问题。我创建了一个带有几个链接的导航,我希望在悬停链接时出现底部边框。我做到了,现在,当我悬停时,链接“移动”到顶部,即使我没有给它们任何边距或填充...... 这是带有示例的 JSFiddle,您需要调整结果窗口的大小才能看到整个菜单。

https://jsfiddle.net/zhzmz6fa/

<div class="collapse navbar-collapse" id="navbarTogglerDemo02">
  <ul class="navbar-nav ml-auto mt-2 mt-lg-0">
    <li class="nav-item active">
      <a class="nav-link" href="#">Home<span class="sr-only">(current)</span></a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="#">O nas</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="#">Opis</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="#">Kontakt</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="#">Archiwum</a>
    </li>
  </ul>
</div>

.navbar 
    font-family: sans-serif;
    background-color: orangered;



.navbar-toggler 
    border: none;


.nav-item 
    padding-left: 1.5rem;


.nav-link:hover,
.nav-link:active 
    border-bottom: 2px solid black;
    transition: border-bottom .5s;

【问题讨论】:

【参考方案1】:

在计算宽度时,边框会额外计算在内。所以如果你有

width: 50px;
border-right: 1px solid black;

元素的宽度为 51 像素。

这也是您的代码所发生的情况。解决方案是始终给它一个边框,但让它透明。

.nav-link 
  border-bottom: 2px solid transparent;

【讨论】:

我决定使用该解决方案,它正在工作。谢谢。 不客气。那么请您结束这个问题吗? (将答案标记为解决方案)【参考方案2】:

border 的替代品是伪元素。

根据需要设置样式,将 opacity 设置为 0。在 :hover:active 上将 opacity 更改为 1。

.navbar 
  font-family: sans-serif;
  background-color: orangered;


.navbar-toggler 
  border: none;


.nav-item 
  padding-left: 1.5rem;


.nav-link 
  position: relative;


.nav-link:after 
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  display: block;
  height: 2px;
  opacity: 0;
  background: black;


.nav-link:hover:after,
.nav-link:active:after 
  opacity: 1;
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">

<nav class="navbar navbar-expand-lg navbar-light fixed-top">
  <a href="#"><img src="http://via.placeholder.com/250x100" class="navbar-brand"></a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

  <div class="collapse navbar-collapse" id="navbarTogglerDemo02">
    <ul class="navbar-nav ml-auto mt-2 mt-lg-0">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home<span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">O nas</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Opis</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Kontakt</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Archiwum</a>
      </li>
    </ul>
  </div>
</nav>

【讨论】:

以上是关于引导悬停移动所有链接的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用链接的引导悬停颜色?

在悬停链接上更改引导导航栏的颜色?

与移动设备的悬停下拉菜单链接

如何在 twitter 引导下拉菜单中使用悬停图像

悬停链接时,将Div水平移动到当前悬停的链接位置。

图片链接在悬停时移动