亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

深入理解和應用css中Float屬性

2024-07-11 08:58:09
字體:
來源:轉載
供稿:網友

一、Float的特性

1. 應用于文字圍繞圖片

2. 創建一個塊級框

3. 多列浮動布局

4. 浮動元素的寬度、高度自適應,但可以設置其值。

二、核心解決的問題

文字圍繞圖片:img標簽與多個文本標簽放置在一個容器中,如果img浮動,文本標簽會圍繞圖片。

<img src="../img/a.jpg" style=" width: 100px; height: 200px; float: left;" alt="">        <p>001文件內容文件內容文內容文件內容<br/>        文件內容文件內容文件內容文件內容文件內內容文件內容<br/>        文件內容文件內容文件內容文件內容文件內容<br/>         文件內容文件內容文件內容文件內容文內容文件內容文件內容<br/>        <p>p標簽文件內容文件內容文件內容文件內容文件內容文容文件內容文件內容文件內容</p>        <div>Div標簽文件內容文件內容文件內容文件內容文件內容文件內容</div>        文件內容文件內容文件內容文件件內容文件內容文件內容<br/>        文件內容文件內容文件內容文件內容文件內容文件內容文件內容文件內容<br/>         文件內容文件內容文件內容文件內容文件內容文件內內容文件內容<br/>        文件內容文件內容文件內容文件容文件內容文件內容<br/>        文件內容文件內容文件內容文件容文件內容文件內容<br/>        </p>

2.1 這是一個問題

浮動元素與正常元素相鄰,且浮動元素與正常元素之間沒有清除浮動,此時正常元素會被浮動元素蓋住,但包含的內容會圍繞浮動元素顯示。

<div style="width: 100px; height: 200px; background: red;float: left;" >001</div> <div style="width: 100px; height: 200px; background: gray;float: none;" ><p>002</p></div>

001浮動,002沒有浮動,但002元素本身被001蓋住,但內容卻圍繞001顯示。

三、非核心且主要應用領域

分欄布局:讓區塊先水平排列,然后超出部分另起一行。

主要特點

1.父級高度塌陷(這也是一個嚴重的問題)

.wrap{           background:red;            padding:10px;           width:auto;        }        .left{            background:gray;            width:200px;            height:100px;            float:left;        }        .right{            background:yellow;            width:100px;            height:100px;            float:left;        }
<div class="wrap">        <div class="left">left</div>        <div class="right">right</div></div>

2.寬、高變成自適應子元素,但寬、高的設置有效

.wrap{           background:red;            padding:10px;           float:left;        }         .left{            width:100px;            background:gray;        }        .right:{            width:200px;            background:yellow;        }
<div class="wrap">        <div class="left">left</div>        <div class="right">right</div></div>

2. 解決高度塌陷的問題

首先我們需要了解BFC和IFC這兩人個基本的概念,因為他與瀏覽器的渲染有著密切的關系。

1.BFC(塊級格式化上下文)

他是一個獨立渲染的區域,規定區域內部如何布局,且與外部毫不相干,主要規則如下:

1.1 內部的box會垂直方向,一個接一個地放置

1.2 Box垂直方向的距離由margin決定,屬于同一個BFC的兩個相鄰box的Margin會發生重疊

1.3 BFC區域不會與float重疊

.head{            background:pink;            margin: 20px 0px;            height:100px;        }        .wrap{           background:red;            padding:10px;           margin:20px 0px;           overflow:hidden;        }         .left{            width:100px;            background:gray;             margin:10px 0px;        }        .right:{            width:200px;            background:yellow;              margin:20px 0px;        }
<div class="head">head</div>    <div class="wrap">        <div class="left">left</div>        <div class="right">right</div>    </div>

.head與.wrap兩個box之間上下各設置有20px的外邊距,但發生了重疊;

.head與.left兩個之間,.head有20px的外邊距,.left有10px的外邊距,沒有發生重疊,因為.wrap使其創建了BFC(overflow:hidden)。

1.4 每個box的margin 左邊,與包含border box的左邊相接觸(右邊一樣),浮動也是如此

2. IFC(行級格式化上下文)

框從包含塊的頂部開始,一個接一個水平放置。水平方向上的外邊距、邊框、內邊距所占空間都放在一起(display為inline、inline-block;元素本身具有inline特性的元素都具體以下特征)。規則如下:

2.1 不能指定寬高

2.2 Margin、Padding、border垂直方向的無效

2.3 行框的左邊緊貼包含塊的左邊,而行框的右邊緊貼其包含框的右邊,而浮動塊可以插入在包含塊邊緣與行框之間。

2.4 行內框高度由line-height決定。

此節例子可以參考display章節的inline元素。

3. 解決方案

主要根據BFC的原理實現,因為BFC的渲染的是整塊區域,也就會計算出寬、高。這也是傳說中的清除浮動的方案

3.1 父容器創建BFC方法

3.1.1 創建BFC的方法

a) Float除了none以外的取值;

b) Overflow除了visible以外的值;

c) Display值為table-cell、table-caption、inline-block、flex、inline-flex等

d) Position值為absloute、fixed

e) Fieldset元素

3.1.2 清除浮動

a) Float、overflow、display三種方式都可以清除浮動,但position、fieldset雖然創建了bfc但不可以清除浮動(也就是不能解決高度塌陷的問題)。主要原因為:position、fieldset都需要子元素來撐開父容器的高度,但子元素浮動后又不存在高度,所以失效。

b) Float、overflow、display示例代碼:

.wrap{            background: gray;            padding: 10px;            overflow: auto;        }        .left, .right{            background: red;            float: left;            width: 200px;            height: 100px;        }        .right{            background: yellow;        }        .footer{            background: pink;        }
<div class="wrap" >        <div class="left">left</div>        <div class="right">right</div>    </div><div class="footer">footer</div>

3.1.3 最后一個子元素clear:both

利用clear:both觸發父容器重新計算高度的原理實現,示例代碼如下:

.wrap{            background: gray;            padding: 10px;         }        .left, .right{            background: red;            float: left;            width: 200px;            height: 100px;        }        .right{            background: yellow;        }        .footer{            background: pink;        }        .clear{            clear: both;            zoom: 1;        }
<div class="wrap" >        <div class="left">left</div>        <div class="right">right</div>        <div class="clear"></div>    </div><div class="footer">footer</div>

3.1.4 After添加最后一個子元素

利用css的:after偽元素實現,動態插入元素并清除浮動:

.wrap{            background: gray;            padding: 10px;         }        .wrap:after{            content: '';            display: block;            overflow: hidden;            clear: both;        }        .left, .right{            background: red;            float: left;            width: 200px;            height: 100px;        }        .right{            background: yellow;        }        .footer{            background: pink;        }
<div class="wrap" >        <div class="left">left</div>        <div class="right">right</div>     </div><div class="footer">footer</div>

4. 總結

1. 利用bfc方式清除浮動,簡單、瀏覽器支持良好,但在IE6-版本支持存在問題。但是存在以下局限性,要適環境而用:

    a) Overflow方式:滾動條會被隱藏,如果子內容超高則存在顯示不全的問題;

    b) Float方式:讓父容器浮動,那么就存在對父容器同輩元素的影響;

    c) Dipslay方式:讓父容器變為table或者flex等,都存在不明確的影響,大家都不推薦使用。

2. 最佳解決方案:利用:after添加一個偽元素并給予clear:both和zoom:1來實現清除浮動,兼容性好,對環境影響最小。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
538国产精品一区二区免费视频| 亚洲成人久久久久| 国产午夜精品美女视频明星a级| 亚洲最大成人在线| …久久精品99久久香蕉国产| 91精品视频免费看| 国产精品91久久久久久| 日本精品在线视频| 亚洲深夜福利视频| 最近2019中文字幕大全第二页| 亚洲欧美日韩在线高清直播| 亚洲欧洲一区二区三区在线观看| 欧美高清videos高潮hd| 欧美精品在线极品| 欧美精品做受xxx性少妇| 97视频在线观看成人| 欧美黑人极品猛少妇色xxxxx| 在线观看中文字幕亚洲| 国产精品高潮在线| 亚洲影院色在线观看免费| 亚洲热线99精品视频| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲天堂色网站| 精品国产精品三级精品av网址| 国产精品久久久久久久一区探花| 久久久在线视频| 久久偷看各类女兵18女厕嘘嘘| 久久久久久久久久久久av| 欧美在线一级视频| 久久综合伊人77777蜜臀| 亚洲视频欧洲视频| 欧美夫妻性视频| 国产成人在线一区二区| 欧美激情视频在线免费观看 欧美视频免费一| 中文字幕亚洲国产| 国产欧美精品一区二区三区介绍| 国产午夜精品视频| 久久久91精品国产| 久久视频在线直播| 欧美日韩在线看| 日本免费在线精品| www.欧美精品一二三区| 色老头一区二区三区在线观看| 欧洲成人在线视频| 成人中文字幕+乱码+中文字幕| 国内成人精品视频| 国产视频一区在线| 日韩中文字幕在线观看| 国产精品男人的天堂| 高清欧美性猛交xxxx| 欧美主播福利视频| 欧美疯狂做受xxxx高潮| 视频在线一区二区| 欧美在线视频免费播放| 欧美大奶子在线| 亚洲综合精品伊人久久| 爽爽爽爽爽爽爽成人免费观看| 精品久久在线播放| 欧美最猛性xxxxx免费| 欧美高清在线播放| 国产精品情侣自拍| 狠狠爱在线视频一区| 日本免费久久高清视频| 国产日韩精品在线播放| 亚洲一级黄色av| 日本亚洲欧洲色α| 一区二区三区四区在线观看视频| 毛片精品免费在线观看| 亚洲在线观看视频网站| 中日韩美女免费视频网站在线观看| 国产美女精品视频免费观看| 亚洲精品自产拍| 国产日韩av高清| 国产精品视频网| 日韩小视频网址| 日韩欧美999| 欧美在线一级va免费观看| 久久中文字幕视频| 色偷偷偷综合中文字幕;dd| 国产一区二区在线免费视频| 国产精品久久久久久久久免费| 91在线高清免费观看| 欧美精品午夜视频| 自拍偷拍亚洲在线| 精品国产区一区二区三区在线观看| 色悠悠久久久久| 亚洲最大av网站| 91av视频导航| 精品国产福利视频| 欧美激情videoshd| 成人写真福利网| 久久精品国产精品亚洲| 一区二区三区亚洲| 国模吧一区二区三区| 欧美性猛交99久久久久99按摩| 亚洲男人av在线| 亚洲欧美日韩一区在线| 中文字幕日韩综合av| 久久久精品亚洲| 亚洲小视频在线| 欧美精品在线网站| 在线观看免费高清视频97| 国产精品久久久久久久久久久久| 日韩精品在线视频美女| 中文欧美日本在线资源| 久久国产精品久久久久| 欧美国产极速在线| 欧美精品www在线观看| 欧美老少做受xxxx高潮| 欧美激情二区三区| 欧美俄罗斯乱妇| 欧美日在线观看| 欧美夫妻性生活视频| 久久久久久久国产精品| 精品香蕉一区二区三区| 日韩精品在线视频| 欧美在线视频播放| 国产精品第一页在线| 亚洲欧洲一区二区三区在线观看| 日韩欧中文字幕| 日韩毛片在线观看| 亚洲综合色激情五月| 中文字幕精品在线视频| 日韩视频在线观看免费| 日韩电影中文字幕在线观看| 国产精品综合网站| 国产女人18毛片水18精品| 国产日韩欧美视频在线| 欧美一级大片在线观看| 午夜精品久久久久久久久久久久久| 欧美激情aaaa| 亚洲欧美日韩精品| 在线成人免费网站| 午夜精品在线观看| 精品一区精品二区| 欧美大片在线影院| 亚洲精品乱码久久久久久按摩观| 亚洲人成网7777777国产| 91久久精品国产91久久性色| 国产91精品久| 91av在线视频观看| 国产精品678| 国产一区二区三区18| 欧美一级成年大片在线观看| 久久免费视频网| 久久久精品久久久| 日韩电影在线观看永久视频免费网站| 欧美激情亚洲视频| 国产脚交av在线一区二区| 97在线观看视频国产| 2019中文字幕全在线观看| 国产精品国产自产拍高清av水多| 亚洲91精品在线观看| 亚洲自拍中文字幕| 国产亚洲欧美日韩美女| 国产欧美精品日韩精品| 欧美俄罗斯性视频| 青青草原成人在线视频| 欧美国产亚洲视频| 亚洲最大的成人网| 青青草成人在线| 欧美巨猛xxxx猛交黑人97人| 日本精品久久中文字幕佐佐木| 欧洲亚洲在线视频|