引导悬停移动所有链接
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>
【讨论】:
以上是关于引导悬停移动所有链接的主要内容,如果未能解决你的问题,请参考以下文章