首页 > 代码库 > 【CSS】 一个简单的导航条
【CSS】 一个简单的导航条
今天来做一个导航条!
首先写一个坯子:
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 5 <script type="text/javascript" src="http://www.mamicode.com/js/index.js"></script> 6 <title>导航条</title> 7 </head> 8 9 <body>10 <div id="topBox">11 <ul>12 <li><a href="http://www.mamicode.com/#"><font>首页</font><span>Home</span></a></li>13 <li><a href="http://www.mamicode.com/#"><font>社区</font><span>SNS</span></a></li>14 <li><a href="http://www.mamicode.com/#"><font>知识</font><span>Knowledge</span></a></li>15 <li><a href="http://www.mamicode.com/#"><font>关于</font><span>About</span></a></li>16 </ul>17 </div>18 </body>19 </html>
效果:
接下来,我们给几个链接加上边框,除去前面的点和下划线。
1 <style> 2 #topBox ul li { 3 list-style-type: none; //除去前面的点 4 } 5 #topBox ul li a { 6 display: block; 7 width: 120px; 8 height: 60px; 9 border: 1px solid; //加上边框10 color: black;11 text-decoration: none; //除去下划线12 }13 </style>
效果:
ps:注意a标签的display:block配置项,由于a标签为行内元素,行内元素只能容纳文本或者其他行内元素,所以如果不将其设置为块级元素,则设置的宽高将不起作用。
随后,我们把文字居中,设定文字的尺寸、边框的样式,我们还可以添加一个阴影,就像一个凸出的按钮。
1 <style> 2 #topBox ul li { 3 list-style-type: none; 4 } 5 #topBox ul li a { 6 display: block; 7 width: 120px; 8 height: 60px; 9 border: 1px solid;10 color: black;11 text-decoration: none; 12 text-align: center;13 border-radius:15px;14 -moz-border-radius:15px; /* Old Firefox */15 box-shadow: 6px 6px 3px #888888;16 }17 #topBox ul li a font {18 font-size: 20px;19 padding-top: 7px; 20 display: block;21 }22 #topBox ul li a span {23 font-size: 15px;24 display: block;25 }26 </style>
效果:
我们看到这样还是竖排的,我们将其向左浮动:
1 #topBox ul li {2 list-style-type: none;3 float: left;4 }
效果:
这里,我们先看看这个导航条在整个界面的方位:
其中的红线为界面中线。
我们发现,导航条靠左,而我们要求的是居中。
这里我们需要用到前面说过的绝对定位和相对定位的知识。
我们分两步走:
第一步:首先把ul块设置为相对定位,并以现在的左边线为基线,向右偏移界面的50%距离。
1 #topBox ul {2 float: left;3 position: relative;4 left: 50%;5 }
ps:在这里,我们先把整个ul块向左浮动,再设置相对定位并向右偏移50%,此时他会以他的原始位置为基准,相对偏移了该父元素即窗口的50%的宽度。
效果:
第二步:我们将以ul块为父元素,即包含快元素,将其下的li块为偏移块元素,设置为相对定位,并将li向左偏移相对于ul块元素50%宽度的距离。
1 #topBox ul li {2 position: relative;3 right: 50%;4 float: left;5 list-style-type: none;6 }
效果:
按理说应该没问题了,不过怎么还有点偏呢?
多方找原因后才发现,这是浏览器默认给元素添加了一定宽度的内边距和外边距的缘故,只要我们人为的设置去除各元素的内外边距,应该就没问题了。
1 * {2 padding:0; 3 margin:0;4 }
*是通配符,这代码表示将所有元素的内外边距均设置为0;
效果:
这样看起来就没问题了!
我们回到导航条本体上来。
基于以上配置,基本上一个导航条就没有问题了,接下来就是如何做得更美观。添加背景,调整间距,一步一步慢慢实现。
1 <style> 2 * { 3 margin: 0px; 4 padding: 0px; 5 } 6 #topBox { 7 padding-top: 30px; 8 height: 70px; 9 }10 #topBox ul{11 padding-top: 10px;12 float: left;13 position: relative;14 left: 50%;15 }16 #topBox ul li{ 17 position: relative;18 right: 50%;19 float: left;20 list-style-type: none; 21 }22 #topBox ul li a {23 display: block;24 width: 120px;25 height: 60px;26 border: 1px solid;27 margin: 0 10px 0 10px;28 color: black;29 text-decoration: none; 30 text-align: center;31 border-radius:15px;32 -moz-border-radius:15px; /* Old Firefox */33 box-shadow: 6px 6px 3px #888888;34 }35 #topBox ul li a font {36 font-size: 20px;37 padding-top: 7px; 38 display: block;39 }40 #topBox ul li a span {41 font-size: 18px;42 margin-top: 2px;43 display: block;44 } 45 </style>
效果:
我们还可以给他添加一个鼠标悬停的效果:
1 #topBox ul li a:hover {2 color: red;3 border: none; 4 }
效果:
附上完整代码:
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 5 <script type="text/javascript" src="http://www.mamicode.com/js/index.js"></script> 6 <title>导航条</title> 7 <style> 8 * { 9 margin: 0px;10 padding: 0px;11 }12 #topBox {13 padding-top: 30px;14 height: 70px; 15 }16 #topBox ul{17 padding-top: 10px;18 float: left;19 position: relative;20 left: 50%;21 }22 #topBox ul li{ 23 position: relative;24 right: 50%;25 float: left;26 list-style-type: none; 27 }28 #topBox ul li a {29 display: block;30 width: 120px;31 height: 60px;32 border: 1px solid;33 margin: 0 10px 0 10px;34 color: black;35 text-decoration: none; 36 text-align: center;37 border-radius:15px;38 -moz-border-radius:15px; /* Old Firefox */39 box-shadow: 6px 6px 3px #888888;40 }41 #topBox ul li a font {42 font-size: 20px;43 padding-top: 12px; 44 display: block;45 }46 #topBox ul li a span {47 font-size: 18px;48 margin-top: 2px;49 display: block;50 }51 #topBox ul li a:hover {52 color: red;53 border: none; 54 }55 </style>56 </head>57 58 <body>59 <div id="topBox">60 <ul>61 <li><a href="http://www.mamicode.com/#"><font>首页</font><span>Home</span></a></li>62 <li><a href="http://www.mamicode.com/#"><font>社区</font><span>SNS</span></a></li>63 <li><a href="http://www.mamicode.com/#"><font>知识</font><span>Knowledge</span></a></li>64 <li><a href="http://www.mamicode.com/#"><font>关于</font><span>About</span></a></li>65 </ul>66 </div>67 </body>68 </html>
我们还可以给各个元素添加背景、字体样式、大小、特效等等,最后结果如何,就看个人的审美了。
【CSS】 一个简单的导航条