真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

好程序員web前端學(xué)習(xí)路線分享CSS浮動-清除浮動篇

好程序員web前端學(xué)習(xí)路線分享CSS浮動-清除浮動篇,為什么要清除浮動

這里所說的清除浮動,并不是不要浮動了,而是清除浮動與浮動之間的影響。那么到底會有什么影響呢?

創(chuàng)新互聯(lián)建站作為成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,有關(guān)企業(yè)網(wǎng)站制作方案、改版、費用等問題,行業(yè)涉及成都報廢汽車回收等多個領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。

1. 高度塌陷

舉個例子我們看一下。

  好程序員web前端學(xué)習(xí)路線分享CSS浮動-清除浮動篇

 我們在這里設(shè)置了div0 是外容器, div1 是內(nèi)部容器, div1 因為設(shè)置了寬高是 100 ,所以顯示的時候就是一個橙色的 100*100 的方塊,但是 div0 僅設(shè)置了背景色,因為 div 特有的獨占一行,寬度會自動 100% ,高度被內(nèi)部容器 div1 撐開了,撐開的高度是 100 像素,所有看到一個綠色高 100 像素,寬度 100% 的容器

 現(xiàn)在我們給div1 設(shè)置浮動

  好程序員web前端學(xué)習(xí)路線分享CSS浮動-清除浮動篇

 這時候我們發(fā)現(xiàn)div0 這個外容器沒了,看不見了。。別急,我們在 div0 里打一些字看看

  好程序員web前端學(xué)習(xí)路線分享CSS浮動-清除浮動篇

 我們發(fā)現(xiàn)aaa 這些文字出來了,環(huán)繞在橙色方塊周圍了,這個原因在浮動中我們已經(jīng)講解了,而且我們也發(fā)現(xiàn)綠色的容器也出來了,但是它的高度僅僅是文字的行高。這就說明,內(nèi)部的橙色塊設(shè)置浮動后,它的父級容器綠色塊就不知道橙色容器的高度了,因此綠色容器的高度變成了 0 ,寫入文字后,綠色容器重新被撐開高度才可以看到。我們把這種情況稱為 高度塌陷。

我們其實是希望一個容器中的內(nèi)容不斷的撐開容器的高度,這樣我們后續(xù)的內(nèi)容就可以緊貼在上面了,而網(wǎng)頁中的內(nèi)容并不是都是靜態(tài)的,很多都需要每天更新,更新的內(nèi)容多少,圖片高度,都不相同。那么后面的東西想要緊貼上面的內(nèi)容,上面內(nèi)容的高度就不能設(shè)置一個固定數(shù)值,否則很多數(shù)據(jù)的時候放不下。如果不設(shè)置高度,一旦設(shè)置浮動后,就會出現(xiàn)高度塌陷。丟失了高度后,頁面后續(xù)的內(nèi)容就會插在上面內(nèi)容的底部,頁面就會錯亂,因此我們就需要做清除浮動來解決這個問題,最終做到即使使用浮動,外容器也會因為內(nèi)容的多少自動撐開高度,不會高度塌陷。

margin padding設(shè)置值不能正確顯示

2. Margin 和 padding 屬性值不正確

由于浮動導(dǎo)致父級子級之間設(shè)置了css padding 、 css margin 屬性的值不能正確表達。特別是上下邊的 padding 和 margin 不能正確顯示。

 要來解決這個問題,我們就必須來認(rèn)識一下BFC

什么是BFC

 要來理解BFC ,先介紹一下 Box 和 Formatting Context

Box  是  CSS  布局的對象和基本單位,  簡單來說頁面就是由Box 組成, 元素的類型和 display  屬性,決定了這個  Box  的類型。 不同類型的  Box , 會參與不同的  Formatting Context (一個決定如何渲染文檔的容器),因此 Box 內(nèi)的元素會以不同的方式渲染。

1 、block-level box:display  屬性為  block, list-item, table  的元素,會生成  block-level box 。并且參與  block formatting context ;

2 、inline-level box:display  屬性為  inline, inline-block, inline-table  的元素,會生成  inline-level box 。并且參與  inline formatting context ;

3 、run-in box: css3  中才有, 這兒先不講了。

Formatting context  是  W3C CSS2.1  規(guī)范中的一個概念。它是頁面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則,它決定了其子元素將如何定位,以及和其他元素的關(guān)系和相互作用。最常見的  Formatting context  有  Block fomatting context ( 簡稱 BFC) 和  Inline formatting context ( 簡稱 IFC) 。

BFC(Block formatting context) 直譯為 " 塊級格式化上下文 " 。它是一個獨立的渲染區(qū)域,只有 Block-level box 參與, 它規(guī)定了內(nèi)部的 Block-level Box 如何布局,并且與這個區(qū)域外部毫不相干。

BFC 布局規(guī)則:

(1) 內(nèi)部的Box 會在垂直方向,一個接一個地放置。

(2)Box 垂直方向的距離由 margin 決定。屬于同一個 BFC 的兩個相鄰 Box 的 margin 會發(fā)生重疊

(3) 每個元素的margin box 的左邊, 與包含塊 border box 的左邊相接觸 ( 對于從左往右的格式化,否則相反 ) 。即使存在浮動也是如此。

(4)BFC 的區(qū)域不會與 float box 重疊。

(5)BFC 就是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面的元素。反之也如此。

(6) 計算BFC 的高度時,浮動元素也參與計算

瞧,最后一條就是我們需要利用的了,我們只需要利用BFC 就可以解決浮動后外容器高度塌陷的問題

如何生成BFC

  1. 根元素 是BFC 模式

這種不能考慮,因為都不是根元素

  1. 設(shè)置高度

顯然也是不可以的。

  1. float 屬性不為 none

本來就要設(shè)置浮動的。所以也不考慮

  1. position 為 absolute 或 fixed

這樣設(shè)置后,就失去浮動的意義了。因此也不使用

  1. display 為 inline-block, table-cell, table-caption, flex, inline-flex

雖然可以開啟,但是導(dǎo)致父元素原有寬度丟失

  1. overflow 不為 visible

這種方法副作用比較小,但是還是有問題的。比如overflow 設(shè)置為 hidden ,這個不行,內(nèi)容的高度是撐開的寬度也不能確定。設(shè)置為 scroll ,會出現(xiàn)右邊和下邊的滾動條寬度

設(shè)置為auto 最合適,不過,如果里面的內(nèi)容使用了定位,并且超出去就會出現(xiàn)滾動條。所以只能保證內(nèi)容不能有定位。

Clear:both

清除:兩者間,顧名思義就是清除浮動

  好程序員web前端學(xué)習(xí)路線分享CSS浮動-清除浮動篇

 我們看到如果要使用clear:both ,就需要給高度塌陷的容器里面最后追加一個 div ,并且給這個 div 設(shè)置為 clear : both ,我們發(fā)現(xiàn)這種使用方法比較麻煩,每次設(shè)置都需要最后增加 div 。

因此我們做了一個修改

html>
< html  lang= "en">
< head>
    < meta  charset= "UTF-8">
    < title>Titletitle>
    < style>
         #div0
        {

             background-colorgreenyellow;
        }
         #div1
        {
             width: 100 px;
             height: 100 px;
             background-colororange;
             floatleft;
        }
         /* 在外容器的里面最后添加內(nèi)容 */
        . clearFloat: after
        {
             content""; /* 添加一個空字符串 */
             displayblock; /* 設(shè)置這個空字符串是一個塊,這樣會獨占一行 */
             height: 0; /* 設(shè)置這個添加的空字符串的高度是 0*/
             visibilityhidden; /* 不讓這個空字符串顯示 */
             clearboth; /* 清除浮動 */
        }
        . clearFloat
        {
             zoom: 1; /*IE6 以下的瀏覽器也可以利用這種方式清除浮動 */
        }
    style>
head>
< body>
    < div  id= "div0"  class= "clearFloat">
        < div  id= "div1">div>
    div>
body>
html>


分享文章:好程序員web前端學(xué)習(xí)路線分享CSS浮動-清除浮動篇
文章來源:http://weahome.cn/article/ihchos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部