【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="js/index.js"></script>
 6         <title>导航条</title>
 7     </head>
 8     
 9     <body>
10         <div id="topBox">
11             <ul>
12                 <li><a href="#"><font>首页</font><span>Home</span></a></li>
13                 <li><a href="#"><font>社区</font><span>SNS</span></a></li>
14                 <li><a href="#"><font>知识</font><span>Knowledge</span></a></li>
15                 <li><a href="#"><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          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          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: absolute;
4     left: 50%;
5 }

ps:在这里,我们先把整个ul块向左浮动,再设置绝对定位并向右偏移50%,此时他会以窗口为基准,相对偏移了窗口50%的宽度。

  其实这里也可以设置为相对定位,因为上面没有设置id="topBox"的宽度,所以他默认为窗口宽度,这样就和窗口就没区别了,不过如果设置了div的宽度,相对定位就会以其父元素即div设置的宽度计算,这样就达不到效果了。

效果:

第二步:我们将以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          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="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                  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="#"><font>首页</font><span>Home</span></a></li>
62                 <li><a href="#"><font>社区</font><span>SNS</span></a></li>
63                 <li><a href="#"><font>知识</font><span>Knowledge</span></a></li>
64                 <li><a href="#"><font>关于</font><span>About</span></a></li>
65             </ul>
66         </div>
67     </body>
68 </html>


我们还可以给各个元素添加背景、字体样式、大小、特效等等,最后结果如何,就看个人的审美了。

原文地址:https://www.cnblogs.com/linxiong945/p/4024754.html