有hover效果的页面导航的制作思路

在做顶部页面导航时,很多情况下网站需要鼠标悬停的底部高亮线的效果。这部分nav一般是采用ul+lian+a的方式来做,li设置display为行内块元素。今天的想法是让这个悬停产生的线如何跟这个字的宽度相同,而不是li的宽度?

这个想法的关键在于这个悬停线统一是用伪元素来实现的,伪元素的宽度就是这个悬停线的宽度,因此css类选择器应该是 .nav ul li a:hover::after的格式。但还是出现了一些小问题,比如这个a的宽度只能是被里面文字撑开的宽度,不能设置值 一般对a就设置width:100%即可。 但导航的文字之间是有空隙的,这个是个技巧,也就是设置li的margin值,从而让导航按钮之间有个等大的间隔。 具体实现代码如下:

1
2
3
4
5
6
7
8
9
10
<div class="nav">
<ul>
<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>
<li><a href="#">APP下载</a></li>
</ul>
</div>
1
2
3
4
5
6
7
.nav{width:450px; height:26px; position:absolute; right:24%; bottom:18px;}
.nav ul::after{content: ""; display: block; clear:both;}
.nav ul li{ float: left; height:26px; line-height: 26px; position:relative;margin:0 12px;}
.nav ul li a{font-size:18px; color:#464646; display: block; }
.nav ul li a:hover::after{content:"";width:100%;
border-bottom:2px solid #49d7e7; position: absolute;
left:0; bottom:-18px;}

一点小记录,希望对新人有启示作用。