css之浮動的清除

來源:互聯網
上載者:User

標籤:

先看看不清除浮動的效果
<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之浮動的清除

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.