制作水平菜单可以使用 display: inline-block
或者 float
来实现。以下是使用 display: inline-block
实现水平菜单的示例代码:
<nav class="horizontal-menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
</nav>
.horizontal-menu ul {
list-style: none;
margin: 0;
padding: 0;
text-align: center;
}
.horizontal-menu li {
display: inline-block;
margin: 0 10px;
}
.horizontal-menu a {
display: block;
padding: 10px;
color: #333;
text-decoration: none;
}
.horizontal-menu a:hover {
background-color: #333;
color: #fff;
}
解释:
.horizontal-menu ul
设置了 list-style
、margin
和 padding
,去掉了列表的默认样式,并且将菜单居中对齐。.horizontal-menu li
设置了 display: inline-block
,将列表项排列在同一行,并且设置了 margin
为 0 10px
,增加了列表项之间的间距。.horizontal-menu a
设置了 display: block
,将菜单项变成块级元素,方便设置宽度和高度。同时设置了 padding
、color
和 text-decoration
,为菜单项添加基本样式。.horizontal-menu a:hover
设置了菜单项鼠标悬停时的样式。制作带有三角形指示的垂直菜单可以使用 :after
伪元素来实现。以下是使用 :after
伪元素实现带有三角形指示的垂直菜单的示例代码:
<nav class="vertical-menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
</nav>
.vertical-menu ul {
list-style: none;
margin: 0;
padding: 0;
}
.vertical-menu li {
position: relative;
}
.vertical-menu a {
display: block;
padding: 10px;
color: #333;
text-decoration: none;
}
.vertical-menu a:hover {
background-color: #333;
color: #fff;
}
.vertical-menu li:hover:after {
content: "";
position: absolute;
top: 50%;
right: 0;
margin-top: -5px;
border-width: 5px 0 5px 5px;
border-style: solid;
border-color: #333 transparent transparent transparent;
}
解释:
.vertical-menu ul
和 .vertical-menu li
的样式与水平菜单相同。.vertical-menu a
的样式与水平菜单相同。.vertical-menu li:hover:after
使用 :hover
伪类和 :after
伪元素来实现鼠标悬停时显示三角形指示。首先使用 content
属性添加一个空内容,然后设置 position
为 absolute
,使其相对于父元素定位,然后设置 top
和 right
为 0
,使其在列表项的最右侧显示。接着使用 margin-top
将三角形垂直居中对齐。最后使用 border
属性设置三角形的样式和颜色。