目标:
css中after伪类,last-child伪类的使用。以及部分css3的属性。
过程:
在制作导航时,经常会遇到在每一个li后面添加一个分割符号,到最后一个元素的时候,分割符就会去掉的一种效果。
如图
那么制作这样的一个效果,怎么用纯css很简单的完成了。这里用到了css的伪类。
html部分
<body>
<ul class="nav">
<li><a href="">Home</a></li>
<li><a href="">About Me</a></li>
<li><a href="">Portfolio</a></li>
<li><a href="">Blog</a></li>
<li><a href="">Resources</a></li>
<li><a href="">Contact Me</a></li>
</ul>
</body>
然后调用css样式
body{
background: #ebebeb;
}
.nav{
width:560px;
height: 50px;
font:bold 0/50px Arial;
text-align:center;
margin:40px auto 0;
background: #f65f57;
/*制作圆*/
border-radius:9px;
/*制作导航立体风格*/
box-shadow:0px 5px #911;
}
.nav a{
display: inline-block;
-webkit-transition: all 0.2s ease-in;
-moz-transition: all 0.2s ease-in;
-o-transition: all 0.2s ease-in;
-ms-transition: all 0.2s ease-in;
transition: all 0.2s ease-in;
}
.nav a:hover{
-webkit-transform:rotate(10deg);
-moz-transform:rotate(10deg);
-o-transform:rotate(10deg);
-ms-transform:rotate(10deg);
transform:rotate(10deg);
}
.nav li{
position:relative;
display:inline-block;
padding:0 16px;
font-size: 13px;
text-shadow:1px 2px 4px rgba(0,0,0,.5);
list-style: none outside none;
}
/*使用伪元素制作导航列表项分隔线*/
<span style="color:#ff0000;">.nav li:after</span>{
<strong> content:"";
position:absolute;
top:15px;
right:0px;
width:1px;
height:15px;
background:linear-gradient(to bottom, #f82f87,#B0363F,#f82f87);</strong>
}
/*删除第一项和最后一项导航分隔线*/
<span style="color:#ff0000;">.nav li:last-child:after</span>{
<strong> width:0px;
height:0px;</strong>
}
.nav a,
.nav a:hover{
color:#fff;
text-decoration: none;
}
css中的.nav li:after表明了在每一个li后面添加一个元素,正是content内容(制作渐变时,不需要有内容被添加,所以为空)。
background:linear-gradient(to bottom ,#f82f87,#bo363f,#f82f87) //css3中的渐变样式
对每一个li后面添加了一个渐变后,需要清除最后一个li的。
这里面使用了.nav li:last-child:after的伪类,将其宽高设置为0。
结果:
通过对伪类的使用,很简单的制作了导航中经常碰到的问题。
案例中,还有css3中的transition动画的使用,transform变形,background:linear-gradient();渐变的设置。