【问题标题】:bootstrap hover moving all the links引导悬停移动所有链接
【发布时间】:2023-04-02 13:05:01
【问题描述】:

我正在玩引导程序,但遇到了一些问题。我创建了一个带有几个链接的导航,我希望在悬停链接时出现底部边框。我做到了,现在,当我悬停时,链接“移动”到顶部,即使我没有给它们任何边距或填充...... 这是带有示例的 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;
}

【问题讨论】:

    标签: html css twitter-bootstrap navigation hover


    【解决方案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>

    【讨论】:

      猜你喜欢
      • 2015-05-24
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 2019-01-20
      • 2016-06-08
      相关资源
      最近更新 更多