li浮動引起ul高度坍陷的解決方法

我們都知道float在CSS中的作用是使元素脫離正常的文檔流並使其移動到其父元素的“最左邊”或“最右邊”。 元素浮動之後,它脫離當前正常的文檔流,所以無法撐開其父元素,造成父元素的高度塌陷。如下的代碼就是li向左浮動後,ul高度坍陷,所以border就顯示爲一條線。代碼、效果如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>li浮動引起ul高度坍陷的解決方法</title>
 6     <style type="text/css">
 7         *{
 8             margin: 0;
 9             padding:0;
10             font-size: 14px;
11             list-style: none;
12         }
13 
14         ul{
15             margin: 100px auto;
16             width: 505px;
17             border: 1px solid #FC8403;
18         }
19         li{
20             float: left;
21         }
22         a{
23             text-decoration: none;
24             display: block;
25             height: 30px;
26             line-height: 30px;
27             background-color: #ccc;
28             width: 100px;
29             margin-right: 1px;
30             text-align: center;
31 
32         }
33         a:hover{
34             background-color: #f60;
35             color: #fff;
36         }
37 
38         .clearfix { 
39           *zoom: 1; 
40         } 
41         .clearfix:before, .clearfix:after { 
42           display: table; 
43           line-height: 0; 
44           content: ""; 
45         } 
46         .clearfix:after { 
47           clear: both; 
48         } 
49     </style>
50 </head>
51 <body>
52     <ul>
53         <li>
54             <a href="##">    </a>
55         </li>
56         <li>
57             <a href="##">新聞資訊</a>
58         </li>
59         <li>
60             <a href="##">產品展示</a>
61         </li>
62         <li>
63             <a href="##">售後服務</a>
64         </li>
65         <li>
66             <a href="##">聯繫我們</a>
67         </li>
68     </ul>
69 </body>
70 </html>
View Code

下面我們就來看一下float浮動因起此問題的幾種解決方法:

1、最直接簡單的方法就是給ul加一個高度。

1         ul{
2             margin: 100px auto;
3             width: 505px;
4             border: 1px solid #FC8403;
5 
6             height: 30px; /*添加高度,解決float浮動引起的高度坍陷*/
7         }

2、在最後一個li後加上一個div,給div加上clear:both的樣式。

1         <li>
2             <a href="##">聯繫我們</a>
3         </li>
4         <div style="clear:both;"></div><!--添加一個空div,用clear:both清除浮動造成的影響--> 

3、給ul加上overflow: hidden;zoom:1;的樣式。

1         ul{
2             margin: 100px auto;
3             width: 505px;
4             border: 1px solid #FC8403;
5 
6             overflow: hidden;/*添加高度,解決float浮動引起的高度坍陷*/
7             zoom:1;
8         }

4、給ul加class="clearfix"的樣式。

 1         .clearfix { 
 2           *zoom: 1; 
 3         } 
 4         .clearfix:before, .clearfix:after { 
 5           display: table; 
 6           line-height: 0; 
 7           content: ""; 
 8         } 
 9         .clearfix:after { 
10           clear: both; 
11         }

以上任意一種方法,都可以解決此問題。

原文地址:http://www.cnblogs.com/junjieok/p/4513363.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章