导航栏宽度相等 bootstrap 4
Equal widths in navbar bootstrap 4
需要一些帮助来设计带有 bootstrap 4 和弹性框的导航栏。我想要的设计基本上如下所示,但我希望徽标位于中心,因此两侧链接的 space 相等。
--------------------------------------------------------------
| | Link | Link | Logo | LongerLink | LongerLink | |
--------------------------------------------------------------
我目前遇到的问题是,较长的链接项目比较短的链接占用更多 space,因此徽标向左偏移。我该如何解决?下面的代码。
.navbar {
background-color: #389FCE;
height: 100px;
display: flex;
}
.navbar-nav {
width: 100%;
display: flex;
flex: 1;
min-width: 0;
justify-content: space-between;
align-items: center;
}
.nav-link {
font-family: 'Nexa-Bold', sans-serif;
font-style: normal;
font-weight: 700;
font-size: 20px;
color: white;
line-height: 80px;
}
<nav class="navbar navbar-expand-sm">
<button class="navbar-toggler" data-toggle="collapse" data-target="#collapsibleNavbar" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon">
<i class="fas fa-bars" style="color:white; font-size:28px;"></i>
</span>
</button>
<div class="collapse navbar-collapse" id="collapsibleNavbar">
<ul class="navbar-nav nav-fill w-100">
<li class="nav-item">
<a class="nav-link" id="shortLink" href="#">HOME</a>
</li>
<li class="nav-item">
<a class="nav-link" id="shortLink" href="#">ABOUT</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<img src="images/Logo_navbar.png">
</a>
</li>
<li class="nav-item">
<a class="nav-link" id="longLink" href="#">PRODUCTS</a>
</li>
<li class="nav-item">
<a class="nav-link" id="longLink" href="#">CONTACT</a>
</li>
</ul>
</div>
</nav>
您必须根据项目的数量来设置宽度才能做到这一点。没有 flexbox 属性 可以为您管理它。
.nav-fill .nav-item {
flex: 1 0 20%; /* 5 items of 20% each */
text-align: center;
border:1px solid red;
}
您可以将导航项的 flex-basis: 100%(而不是自动)。还允许它们收缩(设置最小宽度也是必要的,因为)...
.nav-item {
flex: 0 1 100%;
min-width: 0.1px;
}
然后,您需要考虑当较长的链接比其他链接更宽时,您希望如何处理溢出文本的隐藏。我会像这样使用 text-overflow: ellipsis;
...
.nav-link {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
需要一些帮助来设计带有 bootstrap 4 和弹性框的导航栏。我想要的设计基本上如下所示,但我希望徽标位于中心,因此两侧链接的 space 相等。
--------------------------------------------------------------
| | Link | Link | Logo | LongerLink | LongerLink | |
--------------------------------------------------------------
我目前遇到的问题是,较长的链接项目比较短的链接占用更多 space,因此徽标向左偏移。我该如何解决?下面的代码。
.navbar {
background-color: #389FCE;
height: 100px;
display: flex;
}
.navbar-nav {
width: 100%;
display: flex;
flex: 1;
min-width: 0;
justify-content: space-between;
align-items: center;
}
.nav-link {
font-family: 'Nexa-Bold', sans-serif;
font-style: normal;
font-weight: 700;
font-size: 20px;
color: white;
line-height: 80px;
}
<nav class="navbar navbar-expand-sm">
<button class="navbar-toggler" data-toggle="collapse" data-target="#collapsibleNavbar" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon">
<i class="fas fa-bars" style="color:white; font-size:28px;"></i>
</span>
</button>
<div class="collapse navbar-collapse" id="collapsibleNavbar">
<ul class="navbar-nav nav-fill w-100">
<li class="nav-item">
<a class="nav-link" id="shortLink" href="#">HOME</a>
</li>
<li class="nav-item">
<a class="nav-link" id="shortLink" href="#">ABOUT</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<img src="images/Logo_navbar.png">
</a>
</li>
<li class="nav-item">
<a class="nav-link" id="longLink" href="#">PRODUCTS</a>
</li>
<li class="nav-item">
<a class="nav-link" id="longLink" href="#">CONTACT</a>
</li>
</ul>
</div>
</nav>
您必须根据项目的数量来设置宽度才能做到这一点。没有 flexbox 属性 可以为您管理它。
.nav-fill .nav-item {
flex: 1 0 20%; /* 5 items of 20% each */
text-align: center;
border:1px solid red;
}
您可以将导航项的 flex-basis: 100%(而不是自动)。还允许它们收缩(设置最小宽度也是必要的,因为
.nav-item {
flex: 0 1 100%;
min-width: 0.1px;
}
然后,您需要考虑当较长的链接比其他链接更宽时,您希望如何处理溢出文本的隐藏。我会像这样使用 text-overflow: ellipsis;
...
.nav-link {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}