css 制作横向菜单
使用 Flexbox 制作横向菜单
Flexbox 是一种现代的 CSS 布局方式,非常适合制作横向菜单。通过设置 display: flex,可以轻松实现水平排列的菜单项。
.nav-menu {
display: flex;
list-style: none;
padding: 0;
margin: 0;
background-color: #333;
}
.nav-menu li {
padding: 15px 20px;
}
.nav-menu li a {
color: white;
text-decoration: none;
}
.nav-menu li:hover {
background-color: #111;
}
对应的 HTML 结构:
<ul class="nav-menu">
<li><a href="#">首页</a></li>
<li><a href="#">产品</a></li>
<li><a href="#">服务</a></li>
<li><a href="#">关于我们</a></li>
<li><a href="#">联系</a></li>
</ul>
使用 Inline-Block 实现横向菜单
这是一种传统方法,通过设置 display: inline-block 让列表项水平排列。
.nav-menu {
list-style: none;
padding: 0;
margin: 0;
background-color: #333;
font-size: 0; /* 消除inline-block元素间的间隙 */
}
.nav-menu li {
display: inline-block;
font-size: 16px; /* 重置字体大小 */
padding: 15px 20px;
}
.nav-menu li a {
color: white;
text-decoration: none;
}
.nav-menu li:hover {
background-color: #111;
}
使用 Grid 布局创建横向菜单
CSS Grid 提供了另一种创建横向菜单的方式,特别适合需要更复杂布局的情况。
.nav-menu {
display: grid;
grid-template-columns: repeat(5, auto);
list-style: none;
padding: 0;
margin: 0;
background-color: #333;
}
.nav-menu li {
padding: 15px 20px;
text-align: center;
}
.nav-menu li a {
color: white;
text-decoration: none;
}
.nav-menu li:hover {
background-color: #111;
}
响应式横向菜单
为适应不同屏幕尺寸,可以添加媒体查询使菜单在小屏幕上变为垂直排列。
.nav-menu {
display: flex;
flex-direction: row;
list-style: none;
padding: 0;
margin: 0;
background-color: #333;
}
@media (max-width: 600px) {
.nav-menu {
flex-direction: column;
}
}
带下拉菜单的横向导航
如果需要创建带有下拉功能的横向菜单,可以结合 CSS 和少量 JavaScript。
.nav-menu {
display: flex;
list-style: none;
padding: 0;
margin: 0;
background-color: #333;
}
.nav-menu li {
position: relative;
padding: 15px 20px;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
}
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
.dropdown:hover .dropdown-content {
display: block;
}
对应的 HTML 结构:
<ul class="nav-menu">
<li><a href="#">首页</a></li>
<li class="dropdown">
<a href="#">产品</a>
<div class="dropdown-content">
<a href="#">产品1</a>
<a href="#">产品2</a>
<a href="#">产品3</a>
</div>
</li>
<li><a href="#">服务</a></li>
</ul>
每种方法都有其适用场景,Flexbox 是最简单直接的方案,Grid 适合更复杂的布局需求,而 inline-block 则提供了向后兼容的选择。响应式设计确保菜单在不同设备上都能良好显示。







