前端入門-day3(CSS中浮動和清除浮動)

溫浪發表於2018-10-26

寫在前面

浮動是CSS中一個相對比較麻煩的屬性,與之伴隨的通常是清除浮動。今天我們一起來搞定浮動。

常見的用法

事實上,當我們將一個元素設定成浮動時,達到的效果如下圖:

前端入門-day3(CSS中浮動和清除浮動)

這種版式相信大家都見過,很多雜誌都會採用這種左邊或者右邊插圖,文字環繞的效果。

另一種常見的浮動的用法如下圖:

前端入門-day3(CSS中浮動和清除浮動)

即在某一行內,使某一部分右對齊,通常不會用margin實現,而是使用浮動。

浮動帶來的問題

浮動的元素無法撐開父元素,即導致高度坍塌!!

來看下面的例子:

<div class="container">
  <div class="son1"></div>
  <div class="son2"></div>
</div>

.container {
  background-color: lightblue;
  font-size: 0;
}
.son1 {
  display: inline-block;
  width: 50px;
  height: 50px;
  background-color: orange;
}
.son2 {
  width: 100px;
  height: 100px;
  float: right;
  background-color: lightgray;
}
複製程式碼

前端入門-day3(CSS中浮動和清除浮動)

當較大的方塊浮動時,我們可以看到他無法撐開父元素。通常情況下這不是我們想要的結果,因為這會導致佈局混亂。當父元素內的子元素全部浮動時尤其明顯,父元素的高度會坍塌為0。

前端入門-day3(CSS中浮動和清除浮動)

清除浮動

因此,當我們用到了浮動,又不想出現這種情況的時候,就需要清除浮動。

清除浮動的方式可能有很多種,但是現在比較流行,我個人比較喜歡的方式如下:

首先,新增以下CSS:

.clearfix:after {
    content: '.';
    display: block;
    height: 0;
    visibility: hidden;
    clear: both;
}
複製程式碼

然後,在父容器上新增clearfix類,最後程式碼如下:

<div class="container clearfix">
  <div class="son1"></div>
  <div class="son2"></div>
</div>

.container {
  background-color: lightblue;
  font-size: 0;
}
.son1 {
  display: inline-block;
  width: 50px;
  height: 50px;
  background-color: orange;
}
.son2 {
  width: 100px;
  height: 100px;
  float: right;
  background-color: lightgray;
}
.clearfix:after {
    content: '.';
    display: block;
    height: 0;
    visibility: hidden;
    clear: both;
}
複製程式碼

得到的效果如下:

前端入門-day3(CSS中浮動和清除浮動)

浮動的元素就可以撐開父容器的高度啦!

總結

  • 浮動的元素無法撐開父容器的高度,所以需要清除浮動
  • 浮動可以很簡單的實現右對齊。
  • 浮動可以很簡單的實現文字環繞效果。

因此,注意浮動的使用場景,並且在需要的時候清除浮動,就可以很好的控制浮動啦~

相關文章