在这个简短的教程中,我们将创建一个彩色的下拉菜单只使用CSS3字体和字体的图标。顾名思义,一个图标字体字体映射角色图标,而不是信件。这意味着你得到漂亮的矢量图标在每个浏览器支持HTML5自定义字体(几乎所有)。添加图标元素,您只需要指定一个类名称和图标将被添加:在元素之前的字体的样式表。
HTML
这是我们将使用的标记:
index.html
<nav id="colorNav">
<ul>
<li class="green">
<a href="#" class="icon-home"></a>
<ul>
<li><a href="#">Dropdown item 1</a></li>
<li><a href="#">Dropdown item 2</a></li>
<!-- More dropdown options -->
</ul>
</li>
<!-- More menu items -->
</ul>
</nav>
每一项的主要菜单是最高的无序列表的一个孩子。里面是一个与一个图标类(见图标类)的完整列表,和另一个无序列表,这将显示为下拉在盘旋。
CSs
正如你所看到的在上面的HTML片段中,我们有无序列表嵌套在主ul,所以我们必须小心地编写CSS。我们不想要的样式UL级联到后代。幸运的是,这正是孩子css选择器“>”是:
assets/css/styles.css
#colorNav > ul{
width: 450px;
margin:0 auto;
}
这限制了宽度和保证金声明只有第一个无序列表,这是我们的直系后裔# colorNav项目。记住这一点,让我们看看他实际的菜单项是什么样子:
#colorNav > ul > li{ /* will style only the top level li */
list-style: none;
box-shadow: 0 0 10px rgba(100, 100, 100, 0.2) inset,1px 1px 1px #CCC;
display: inline-block;
line-height: 1;
margin: 1px;
border-radius: 3px;
position:relative;
}
我们设定一个inline-block显示值,列表项一行所示,我们指定一个相对位置正确,这样我们就能抵消一些。定义的锚元素包含实际图标字体太棒了。
#colorNav > ul > li > a{
color:inherit;
text-decoration:none !important;
font-size:24px;
padding: 25px;
}
现在我们可以继续下降的痛苦。在这里,我们将定义一个CSS3动画过渡。我们将设置一个maximum-height 0 px,隐藏下拉。在徘徊,我们将动画的最大高度为更大的值,这将导致逐渐显示列表:
#colorNav li ul{
position:absolute;
list-style:none;
text-align:center;
width:180px;
left:50%;
margin-left:-90px;
top:70px;
font:bold 12px 'Open Sans Condensed', sans-serif;
/* This is important for the show/hide CSS animation */
max-height:0px;
overflow:hidden;
-webkit-transition:max-height 0.4s linear;
-moz-transition:max-height 0.4s linear;
transition:max-height 0.4s linear;
}
这是动画触发器
#colorNav li:hover ul{
max-height:200px;
}
200 px的值是任意的,你将不得不增加它如果您的下拉列表中包含大量的值不符合。不幸的是没有css-only的方法来检测高度,所以我们必须硬编码。
下一步是风格实际的下拉项:
#colorNav li ul li{
background-color:#313131;
}
#colorNav li ul li a{
padding:12px;
color:#fff !important;
text-decoration:none !important;
display:block;
}
#colorNav li ul li:nth-child(odd){ /* zebra stripes */
background-color:#363636;
}
#colorNav li ul li:hover{
background-color:#444;
}
#colorNav li ul li:first-child{
border-radius:3px 3px 0 0;
margin-top:25px;
position:relative;
}
#colorNav li ul li:first-child:before{ /* the pointer tip */
content:'';
position:absolute;
width:1px;
height:1px;
border:5px solid transparent;
border-bottom-color:#313131;
left:50%;
top:-10px;
margin-left:-5px;
}
#colorNav li ul li:last-child{
border-bottom-left-radius:3px;
border-bottom-right-radius:3px;
}
当然,我们将无处没有一些花哨的颜色!这里有5个版本:
#colorNav li.green{
/* This is the color of the menu item */
background-color:#00c08b;
/* This is the color of the icon */
color:#127a5d;
}
#colorNav li.red{ background-color:#ea5080;color:#aa2a52;}
#colorNav li.blue{ background-color:#53bfe2;color:#2884a2;}
#colorNav li.yellow{ background-color:#f8c54d;color:#ab8426;}
#colorNav li.purple{ background-color:#df6dc2;color:#9f3c85;}
使用图标的字体,一个整洁的方面是,您可以更改图标的颜色通过声明一个颜色属性。这意味着所有定制您可能想要可以用CSS。
完成了!
图标的字体是一个伟大的除了你的web开发工具集。常规的字体,您可以使用字体大小、颜色和将属性来定制。本例中没有使用图片和JS,所以它应该很容易匹配与当前设计和使用它在几分钟内。