我在Bootstrap 4中使用了导航栏,除了最后一项之外,我无法弄清楚如何将border-right
应用于nav-link
。
这是我的HTML:
<nav class="navbar navbar-toggleable-md navbar-light bg-transparent">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="#">Logo</a>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#">Home </a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contact</a>
</li>
</li>
</ul>
</div>
</nav>
AND SCSS:
.navbar {
.navbar-nav {
.nav-link {
border-right:1px solid red;
&:last-child {
border-right:none;
}
}
}
}
我不知道为什么,但是此示例会从nav-link
而不是最后一个删除所有边框。
我想在没有javascript或特定类的情况下实现这一目标!谢谢。
答案 0 :(得分:1)
所有nav-link
都是父元素的最后一个子元素。试试这个。也不是说它不必具体,但我假设你知道特异性,所以我会保持原样。
.navbar {
.navbar-nav {
.nav-link {
border-right:1px solid red;
}
li {
&:last-of-type {
.nav-link {
border-right:none;
}
}
}
}
}
请注意,您有一个迷路关闭li
元素。
答案 1 :(得分:1)
:last-child
应定位到nav-item
而不是
更改您的代码SCSS成为:
.navbar {
.navbar-nav {
.nav-link {
border-right:1px solid red;
}
.nav-item {
&:last-child {
.nav-link {
border-right:none;
}
}
}
}
}