標籤:
先看看不清除浮動的效果
<html><head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Document</title> <style type="text/css"> ul {list-style: none; } li { float: left;margin-left: 5px;padding: 0;} .div1 li {background-color: red;} .div2 li {background-color: green; } </style></head><body> <div class="div1"> <ul> <li><a href="https://home.cnblogs.com/">園子</a></li> <li><a href="https://news.cnblogs.com">新聞</a></li> <li><a href="https://q.cnblogs.com/">博問</a></li> </ul> </div> <div class="div2"> <ul> <li><a href="/" class="current_nav">首頁</a></li> <li><a href="/pick/" title="編輯精選博文">精華</a></li> <li><a href="/candidate/" title="候選區的博文">候選</a></li> </ul> </div></body></html>
本想讓div1和div2分成兩行顯示,但是結果顯示在了一行,第二組中的第1個li,去貼靠第一組中的最後一個li了。看看兩個div的高度,顯示為0,原因就是因為div沒有高度,不能給自己浮動的子項目們一個容器。
清除浮動方法
清除浮動方法1.給浮動的元素的祖先元素加高度
如果一個元素要浮動,那麼它的祖先元素一定要有高度,有高度的盒子,才能關住浮動。只要浮動在一個有高度的盒子中,那麼這個浮動就不會影響後面的浮動元素。所以就是清除浮動帶來的影響了。
上面的代碼,為了讓div1浮動的子項目不影響div2,給div1增加 .div1{height: 50px;} 或者給div1的任何一個父級加上高度就達到了想要的結果。
網頁製作中,高度height很少出現。因為能被內容撐高(浮動的元素不能撐高父元素),所以這種清除浮動的方法不太適用。
清除浮動方法2:clear:both;
clear:both; 清除左右浮動,這種方法有一個非常大的問題,margin失效了。
<html><head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Document</title> <style type="text/css"> ul{list-style: none;} li{float: left;margin-left: 5px;padding: 0;background-color: green;} .div1{margin-bottom: 100px;}/*margin失效*/ .div2{margin-top: 100px;clear:both;}/*margin失效*/ </style></head><body> <div class="div1"> <ul> <li><a href="https://home.cnblogs.com/">園子</a></li> <li><a href="https://news.cnblogs.com">新聞</a></li> <li><a href="https://q.cnblogs.com/">博問</a></li> </ul> </div> <div class="div2"> <ul> <li><a href="/" class="current_nav">首頁</a></li> <li><a href="/pick/" title="編輯精選博文">精華</a></li> <li><a href="/candidate/" title="候選區的博文">候選</a></li> </ul> </div></body></html>
清除浮動方法3:隔牆法
外牆法
<html><head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Document</title> <style type="text/css"> ul{list-style: none;} li{float: left;margin-left: 5px;padding: 0;background-color: green;} .div1{margin-bottom: 100px;}/*margin失效*/ .both { clear: both;margin-top:100px; }/*margin失效*/
.h10{height:10px;} </style></head><body> <div class="div1"> <ul> <li><a href="https://home.cnblogs.com/">園子</a></li> <li><a href="https://news.cnblogs.com">新聞</a></li> <li><a href="https://q.cnblogs.com/">博問</a></li> </ul> </div> <div class=‘both .h10‘></div> <div class="div2"> <ul> <li><a href="/" class="current_nav">首頁</a></li> <li><a href="/pick/" title="編輯精選博文">精華</a></li> <li><a href="/candidate/" title="候選區的博文">候選</a></li> </ul> </div></body></html>
margin仍然失效,但是可以給<div class=‘both‘></div> 設定高度,充當margin效果。
內牆法
<div class=‘both h10‘></div> 放到div1的內部,好處是內容可以撐出父級的高了,margin也不會失效了。
<html><head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Document</title> <style type="text/css"> ul{list-style: none;} li{float: left;margin-left: 5px;padding: 0;background-color: green;} .both { clear: both; } .h10{height:10px;} </style></head><body> <div class="div1"> <ul> <li><a href="https://home.cnblogs.com/">園子</a></li> <li><a href="https://news.cnblogs.com">新聞</a></li> <li><a href="https://q.cnblogs.com/">博問</a></li> </ul> <div class=‘both h10‘></div> </div> <div class="div2"> <ul> <li><a href="/" class="current_nav">首頁</a></li> <li><a href="/pick/" title="編輯精選博文">精華</a></li> <li><a href="/candidate/" title="候選區的博文">候選</a></li> </ul> </div></body></html>清除浮動方法4:overflow:hidden;
一個父元素不能被自己浮動的子項目撐出高度。但是只要給父級元素加上 overflow:hidden ; 父親就能被子項目撐出高了。
<html><head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Document</title> <style type="text/css"> ul{list-style: none;} li{float: left;margin-left: 5px;padding: 0;background-color: green;} .div1{overflow:hidden;} </style></head><body> <div class="div1"> <ul> <li><a href="https://home.cnblogs.com/">園子</a></li> <li><a href="https://news.cnblogs.com">新聞</a></li> <li><a href="https://q.cnblogs.com/">博問</a></li> </ul> <div class=‘both‘></div> </div> <div class="div2"> <ul> <li><a href="/" class="current_nav">首頁</a></li> <li><a href="/pick/" title="編輯精選博文">精華</a></li> <li><a href="/candidate/" title="候選區的博文">候選</a></li> </ul> </div></body></html>
本文非原創,純粹學習筆記
css之浮動的清除