当我将页面大小调整到大约 75% 宽度时,导航栏中的元素会变得混乱。例如,右侧的按钮会改变大小,导航链接会偏离中心。
@import url('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap');
*,
*::before,
*::after {
box-sizing: border-box;
}
* {
margin: 0;
padding: 0;
font: inherit;
font-family: 'Roboto', sans-serif;
}
.navbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px 11% 20px 11%;
width: 100%;
}
.navbar ul {
display: flex;
list-style: none;
padding-left: 10%;
}
.navbar ul li a {
color: #4c4d5f;
text-decoration: none;
font-size: 16px;
padding: 10px 23px 10px 15px;
}
.logo {
width: 150px;
height: auto;
}
.dropdown_menu {
display: none;
}
.start,
.login {
border: 1px solid #00b289;
border-radius: 4px;
font-size: 13px;
line-height: 16px;
font-weight: 700;
text-align: center;
letter-spacing: .6px;
text-transform: uppercase;
}
.start {
border-radius: 4px;
background-color: #00b289;
color: #fff;
margin-left: 17px;
padding: 12px 27px 9px;
text-align: center;
}
.login {
padding: 12px 27px 9px;
background-color: transparent;
color: #00b289;
}
.login:hover {
background-color: #00b289;
color: #fff;
}
.dropdown {
display: none;
}
.nav-links .product:hover+.dropdown {
display: block;
position: absolute;
background: white;
margin-top: 15px;
margin-left: -15px;
}
<header>
<nav class="navbar">
<img src="bonsai-logo.svg" class="logo">
<ul>
<li><a>Product <i class="fas fa-caret-down"></i></a></li>
<div class="dropdown_menu">
<li><a>Feauture 1</a></li>
<li><a>Feauture 2</a></li>
<li><a>Feauture 3</a></li>
</div>
<li><a href="">Templates <i class="fas fa-caret-down"></i></a></li>
<li><a href="">Pricing</a></li>
<li><a href="">Reviews</a></li>
</ul>
<div class="nav-buttons">
<button class="login">Log in</button>
<button class="start">Start Free</button>
</div>
</nav>
</header>
我尝试使用百分比来填充 div 和元素,但仍然遇到同样的问题。我只是希望在调整页面大小时徽标和导航之间的空间变小,以便其他所有内容保持不变。
这是我正在尝试重新创建的网站(我还没有尝试使其响应移动设备):Bonsai
首先,您可以通过使用 Flexbox 并将空白设置为 nowrap 来防止按钮换行。
.nav-buttons {
display: flex;
white-space: nowrap;
}
为了确保链接和按钮相对于徽标一起移动,应将它们包装在容器中:
<div class="nav-right">
<!-- Your links and buttons here -->
</div>
使用以下CSS
.nav-right {
display: flex;
align-items: center;
}
模仿示例站点中的固定最大宽度行为:
.navbar {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
height: 78px;
max-width: 70rem;
}
header {
display: flex;
justify-content: center;
padding: 0 2.5rem;
}