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

首頁 > 開發 > CSS > 正文

淺談CSS浮動的特性

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

本文介紹了CSS浮動的特性,分享給大家,順便給自己留個筆記

浮動具有以下特性:

  1. 蓋不住的文本
  2. 浮動元素后面不是塊級元素,后面的元素將會和它并排(除非設置了元素的寬度,并且屏幕放不下時將會換行)
  3. 浮動元素的上一個元素如果沒有浮動,浮動只在當前行浮動;當浮動遇到浮動,它們將在一行排序,除非沒有位置了
  4. 當元素設置定位值為absolute、fixed時,浮動將被忽略
  5. float引起父元素高度塌陷
  6. 浮動元素會被后一個元素的margin-top影響

蓋不住的文本

<style>        body,div{            margin:0;            padding:0;        }       div{           width:100px;           height:100px;       }        .item1{            float:left;            background-color: pink;        }        .item2{            background-color: #58d3e2;        }    </style><div class="item1">item1</div><div class="item2">item2</div>

可以看到,item2的div除了文本,其他的內容都看不見了,因為它跑到item1下面了。為什么文字不會被浮動的元素蓋住呢?因為浮動的本質就是用來實現文字環繞的。

從上面也可以得出:浮動元素后面的塊級元素會占據浮動元素的位置,并且浮動元素總是在標準流元素上面。

浮動元素后面不是塊級元素,后面的元素將會和它并排(除非設置了元素的寬度,并且屏幕放不下時將不會換行)

<style>        body,div{            margin:0;            padding:0;        }       div{           width:100px;           height:100px;       }        .item1{            float:left;            background-color: pink;        }        .item2{            display: inline-block;            background-color: #58d3e2;        }    </style><div class="item1">item1</div><div class="item2">item2</div>

浮動元素的上一個元素如果沒有浮動,浮動只在當前行浮動;當浮動遇到浮動,它們將在一行排序,除非沒有位置了

<style>        body,div{            margin:0;            padding:0;        }       div{           width:100px;           height:100px;       }        .item1{            background-color: pink;        }        .item2{            float:left;            background-color: #58d3e2;        }    </style><div class="item1">item1</div><div class="item2">item2</div><div class="item3">item3</div>

 <style>        body,div{            margin:0;            padding:0;        }       div{           width:400px;           height:100px;           float: left;       }        .item1{            background-color: pink;        }        .item2{            background-color: #58d3e2;        }        .item3{            background-color: #61dafb;        }        .item4{            background-color: #e9203d;        }    </style><div class="item1">item1</div><div class="item2">item2</div><div class="item3">item3</div><div class="item4">item4</div>

可以設置width為百分比來實現自適應

 div{           width:25%;           height:100px;           float: left;       }

當元素設置定位值為absolute、fixed時,浮動將被忽略

<style>        body,div{            margin:0;            padding:0;        }       div{           position: absolute;           float: left;           width:100px;           height:100px;           border: 1px solid red;       }    </style> <div class="item1">浮動遇上定位</div>

行內元素使用浮動以后生成一個塊框,因此它就可以使用width,height,margin,padding等屬性了

 <style>        body,div{            margin:0;            padding:0;        }       [class^='item']{           float: left;           width:100px;           height:100px;           line-height: 100px;           text-align: center;       }        .item1{            float: left;            background-color: pink;        }        .item2{            display: inline-block;            background-color: #58d3e2;        }    </style><span class="item1">item1</span><div class="item2">item2</div>

float引起父元素高度塌陷

在網頁設計中,很常見的一種情況是給內容一個div作為包裹容器,而這個包裹容器不設置高度,而是讓里面的內容撐開包裹容器的高度。如果不給子元素設置浮動的話,并不會出現什么問題,而一旦給子元素設置了浮動,父元素會無法自適應浮動元素的高度,會出現父元素高度為0,從而背景色什么的都不能展示了。原因是:

因為沒有預先設置div高度,所以div高度由其包含的子元素高度決定。而浮動脫離文檔流,所以子元素并不會被計算高度。此時的div中,相當于div中子元素高度為0,所以發生了父元素高度塌陷現象。

   <style>        body,div{            margin:0;            padding:0;        }        .item{            float: left;            width:100px;            height:100px;            background-color: pink;        }    </style>   <div class="box">       <div class="item"></div>   </div>

解決辦法,

1.給父元素增加“overflow:hidden"

當然也可以是"overflow:auto"。但為了兼容IE最好用overflow:hidden。

.box{  overflow:hidden;}

那么為什么“overflow:hidden"會解決這個問題呢?

是因為“overflow:hidden”會觸發BFC,BFC反過來決定了"height:auto"是如何計算的

,即計算BFC的高度時,浮動元素也參與計算,因此此時父元素會自適應浮動元素的高度。

所以呢,也可以設置"display:inline-block"、"position:absolute"、"float:left"來解決父元素高度坍塌的問題。因為凡是能創建一個BFC,就能達到包裹浮動子元素的效果。因此網上都說成“BFC能包裹浮動元素”.

2.在父元素內容的后面或者前面增加偽元素+清除浮動

可以給父元素的內容添加一個偽元素,可以用::before或者::after,然后內容為空,這樣就不會占據位置,最后為偽元素加上“clear:both"來清除浮動。

 <style>        body,div{            margin:0;            padding:0;        }        .box::after{            content: '';            display: block;            clear:both;        }        .item{            float:left;            width:100px;            height: 100px;            background-color: deeppink;        }    </style><div class="box">    <div class="item"></div></div>

為什么這樣可以呢?

弄清原因需要知道兩點:一是偽元素的實際作用,二是css的清除浮動(clear)只能影響使用清除的元素本身,不能影響其他元素,并且清除浮動可以理解為打破橫向排列。

首先需要搞清除::after和::before起的作用,它們不是在一個元素的后面或者前面插入一個偽元素,而是會在元素內容后面或者前面插入一個偽元素(是在元素里面),之前我一直以為:before和:after偽元素 插入的內容會被注入到目標元素的前或后注入,其實注入的內容將是有關聯的目標元素的子元素,但它會被置于這個元素的任何內容的“前”或“后”。我們來舉個例子,可以看到.box的高度為300px,說明兩個偽元素已經插入到.box內容里了。

<style>        body,div{            margin:0;            padding:0;        }        .box::before{            content: 'before';            height: 100px;            width: 100px;            display: block;            clear:both;            background-color: #61dafb;        }        .box::after{            content: 'after';            width:100px;            height:100px;            display: block;            clear:both;            background-color: aquamarine;        }        .item{            float:left;            width:100px;            height: 100px;            background-color: deeppink;        }    </style><div class="box">    <div class="item"></div></div>

綜上,所以我們常用下列方式來清除浮動

.box::after{  content:'';  display:block;  clear:both;}或者.box::before{  content:'';  display:block;  clear:both;}或者.box::before,.box::after{  content:'';  display:block;  clear:both;}//::before和::after必須配合content屬性來使用,content用來定義插入的內容,content必須有值,至少是空。默認情況下,偽類元素的display是默認值inline,可以通過設置display:block來改變其顯示。

在父元素的內容前后插入一個偽元素,content為空可以保證不占據位置(高度為0)。"clear:both"可以清除父元素左右的浮動,導致.box::before和.box::after遇到浮動元素會換行,從而會撐開高度,父元素會自適應這個高度從而不會出現高度坍陷。

其他解決高度坍塌的方法都是基于這兩個思想的,一個是觸發BFC,一個是添加元素+清除浮動(clear)。

浮動元素會被后一個元素的margin-top影響

<style>        body,div{            margin:0;            padding:0;        }        div{            width:100px;            height:100px;        }        div:nth-of-type(1){            float: left;            background-color: #61dafb;        }        div:nth-of-type(2){            margin-top: 100px;            background-color: #58d3e2;        }    </style><div >div1</div><div>div2</div>

可以看到第一個div也跟著下來了,解決辦法是給后一個元素設置clear,此時后一個元素的margin-top將無效

<style>        body,div{            margin:0;            padding:0;        }        div{            width:100px;            height:100px;        }        div:nth-of-type(1){            float: left;            background-color: #61dafb;        }        div:nth-of-type(2){            clear:both;            margin-top: 100px;            background-color: #58d3e2;        }    </style><div >div1</div><div>div2</div>

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
性欧美办公室18xxxxhd| 亚洲摸下面视频| 国产欧美日韩高清| 国产精品久久97| 欧美不卡视频一区发布| 亚洲人成绝费网站色www| 一夜七次郎国产精品亚洲| 色诱女教师一区二区三区| 国产欧美日韩最新| 性色av一区二区咪爱| 91丨九色丨国产在线| 国产一区二区三区18| 日韩中文字幕在线| 亚洲成人网av| 日韩在线视频观看正片免费网站| 91精品中国老女人| 欧美xxxx做受欧美| 国产精品视频在线观看| 亚洲跨种族黑人xxx| 中文字幕免费国产精品| 欧美主播福利视频| 萌白酱国产一区二区| 欧美性生交大片免网| 亚洲精品av在线播放| 在线视频日本亚洲性| 亚洲xxxxx电影| 亚洲欧洲美洲在线综合| 亚洲国产精品系列| 久久久久中文字幕| 欧美性黄网官网| 欧美久久精品午夜青青大伊人| 亚洲电影在线观看| 欧美午夜精品久久久久久浪潮| 国产女人精品视频| 欧美在线视频播放| 中文字幕国产亚洲2019| 国产精品久久二区| 亚洲人精品午夜在线观看| 欧美高跟鞋交xxxxxhd| 国产成人啪精品视频免费网| 韩国福利视频一区| 国产精品永久免费视频| 日韩av一区二区在线观看| 日韩美女av在线| 欧美成人免费网| 4438全国亚洲精品在线观看视频| 国内成人精品一区| 插插插亚洲综合网| 国产精品大陆在线观看| 黄色成人av在线| 国产精品影片在线观看| 日韩av综合中文字幕| 国产伦精品一区二区三区精品视频| 欧美国产激情18| 中文字幕日韩av| 欧美日韩亚洲激情| 国内精品久久久久| 久久久久久免费精品| 亚洲日本aⅴ片在线观看香蕉| 一区二区国产精品视频| 成人羞羞国产免费| 亚洲第一男人av| 欧美亚洲日本网站| 国产精品久久视频| 久久av在线看| 久久精品国产99国产精品澳门| 亚洲欧美日韩国产中文| 7777精品久久久久久| 欧美成人免费在线视频| 欧美二区在线播放| 91免费人成网站在线观看18| 国产脚交av在线一区二区| 欧美疯狂xxxx大交乱88av| 国产香蕉精品视频一区二区三区| 欧美激情精品久久久久久| 91日韩在线视频| 欧美丰满少妇xxxxx做受| 欧美专区福利在线| 日韩视频在线观看免费| 538国产精品一区二区在线| 日本精品久久久久影院| 97精品一区二区三区| 精品久久久视频| 成人动漫网站在线观看| 欧美电影在线观看完整版| 久久成人亚洲精品| 九九精品视频在线观看| 国产一区二区三区在线播放免费观看| 中文字幕亚洲天堂| 亚洲综合国产精品| 91在线免费观看网站| 亚洲成年网站在线观看| 欧美大全免费观看电视剧大泉洋| 欧美贵妇videos办公室| 亚洲理论在线a中文字幕| 日本精品久久中文字幕佐佐木| 8050国产精品久久久久久| 国产精品网址在线| 亚洲精品一区二区三区不| 久久久亚洲成人| 日韩免费黄色av| 久久电影一区二区| 日本久久久久久久久| 亚洲亚裔videos黑人hd| 久热在线中文字幕色999舞| 清纯唯美亚洲综合| 国产精品久久久久久久久久久新郎| 夜色77av精品影院| 国产欧美精品一区二区| 91亚洲精品久久久久久久久久久久| 日韩欧美亚洲国产一区| 亚洲一区av在线播放| 日韩高清a**址| 欧美性xxxxx极品娇小| 欧美日韩成人在线观看| 国产精品毛片a∨一区二区三区|国| 亚洲成人黄色在线观看| 欧美黑人极品猛少妇色xxxxx| 久久人人爽人人| 欧美日韩国产精品一区| 最新亚洲国产精品| 亚洲综合中文字幕68页| 亚洲一区二区三区xxx视频| 亚洲一区美女视频在线观看免费| 永久免费毛片在线播放不卡| 国产精品福利在线观看网址| 红桃视频成人在线观看| 欧美极品少妇xxxxⅹ免费视频| 欧美日韩成人在线播放| 中日韩午夜理伦电影免费| 精品日韩中文字幕| 欧美性生交大片免网| 午夜精品久久久99热福利| 国产欧美精品在线播放| 姬川优奈aav一区二区| 久久九九热免费视频| 亚洲专区在线视频| 日韩av在线资源| 国产精品啪视频| 青青久久av北条麻妃海外网| 国产精品自拍小视频| 91久久久亚洲精品| 亚洲欧美国产精品久久久久久久| 亚洲美女av黄| 国产精品福利在线| 亚洲精品av在线| 欧美激情日韩图片| 精品美女国产在线| 亚洲色无码播放| 青草热久免费精品视频| 亚洲精品一区二区网址| 日韩欧美中文字幕在线播放| 不卡av日日日| 亚洲国产精品专区久久| 久热精品视频在线免费观看| 91精品国产沙发| 精品久久久久久| 97香蕉超级碰碰久久免费软件| 国产精品视频地址| 国模精品一区二区三区色天香| 欧美激情亚洲另类| 亚洲天天在线日亚洲洲精| 亚洲资源在线看| 中文在线资源观看视频网站免费不卡|