1. 程式人生 > 其它 >輝太郎看前端(清除浮動的幾種解決方式)

輝太郎看前端(清除浮動的幾種解決方式)

技術標籤:筆記csshtml

前言

  • 為什麼使用浮動
  • 為什麼要清除浮動
  • 清楚浮動有幾種解決方案

浮動

-使用浮動是因為在html中有時候會遇到幾個塊元素並排的問題,所以就會使用到浮動。

  • 浮動案例
<body>
  <ul>
    <li class="list"></li>
    <li class="list"></li>
    <li class="list"></li>
    <li class="
clear"
>
</li> </ul> </body>
  • 理想效果

在這裡插入圖片描述

  • 佈局效果

在這裡插入圖片描述

  • 浮動後的效果

在這裡插入圖片描述

為什麼清除浮動

由上圖可見,在浮動後父元素高度沒有了,為了解決父元素高度塌陷的問題,我們就要用到清除浮動。

  • 清除由於子元素浮動帶來父元素高度塌陷的影響。
  • 同級元素浮動後,會脫離文件流,對佈局造成了也要用到清除浮動。
  • 同級元素浮動後造成的佈局影響

在這裡插入圖片描述

  • 解決方案

給後邊的兄弟元素新增clear:left;

解決方案

  • 新增冗餘元素併為其設定為clear:both;
ul{
     border: solid blue 2px;
     margin-top: 20px;
    }
    .list{
      width: 100px;
      height: 100px;
      margin: 10px 20px;
      float: left;
      border: 2px solid #ccc;
      background-color: rgb(233, 15, 15);
    }
    .clear{
      clear: both;
      overflow: hidden;
    }

缺點:要在頁面新增許多冗餘元素,太過於麻煩,而且不符合語義化。

  • 採用偽元素(給父元素新增after偽元素)
//父級
ul {
      border: solid blue 2px;
      margin-top: 20px;
    }
     //父級類名,偽元素
    .box:after {
      content: "";
      display: block;
      line-height: 0;
      visibility: hidden;
      clear: both;
    }

    .list {
      width: 100px;
      height: 100px;
      margin: 10px 20px;
      float: left;
      border: 2px solid #ccc;
      background-color: rgb(233, 15, 15);
    }

缺點:IE6/IE7不識別:after偽元素,存在相容性問題

  • 給父元素固定高度

缺點:只適合高度固定的佈局,要給出精確的高度,如果高度和父級div不一樣時,會產生問題。對於響應式佈局會有很大影響。

總結

  • float的屬性left right none inherit
  • clear的屬性left right both none inherit
初出茅廬,請大佬多多關照。