亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

css中如何實現Flex布局的可伸縮性

發布時間:2021-08-03 10:05:24 來源:億速云 閱讀:158 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關css中如何實現Flex布局的可伸縮性,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Flexibility

Flex伸縮布局決定性的特性是讓伸縮項目可伸縮,也就是讓伸縮項目的寬度或高度自動填充剩余的空間。這可以以flex屬性完成。一個伸縮容器會等比地按照各伸縮項目的 擴展比率 分配剩余空間,也會按照 收縮比率 縮小各項目以避免溢出。

Flex屬性

flex屬性可用來指定 可伸縮長度 的部件:擴展比率,收縮比率,伸縮基準線。當有一個元素是伸項目時,flex屬性將代替主軸長度屬性決定元素的主軸長度。若元素不是伸縮項目,則flex屬性不生效。

flex 是 flex-grow、flex-shrink、flex-basis的縮寫

.item {
    flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}
  1. <'flex-grow'> 取值為 <number> ,用來指定項目的擴展比率;若在flex縮寫省略了此屬性值,則flex-grow的指定值是 1;

  2. <'flex-shrink'>取值為 <number> ,用來指定項目的收縮比率;若在flex縮寫省略了此屬性值,則flex-shrink的指定值是 1;

  3. <'flex-basis'>取值為 <length> | auto ,用來定義在分配多余空間之前,項目占據的主軸空間,也就是子元素的基準值,flex-basis 規定的范圍取決于 box-sizing;若在flex縮寫省略了此屬性值,則flex-basis的指定值是 0%。

flex-basis取值的幾種情況:

  1. 固定的長度值,(比如350px),則該項目將占據固定長度的空間;

  2. auto,首先會檢索該項目的主尺寸(也就是該項目的width/height的值,是width還是height取決于主軸的方向,下面假設主軸的方向為水平方向),如果該項目的主尺寸不為auto,則該項目的flex-basis(基準值)采用主尺寸的值;如果該項目的主尺寸為auto(也就是width:auto或不設置項目的width屬性時),則使用該項目的內容content大小為基準值;

  3. 百分比,根據其包含塊(即伸縮父容器)的主尺寸計算。如果包含塊的主尺寸未定義(即父容器的主尺寸取決于子元素),則計算結果和設為 auto 一樣。

flex 的常見值

flex的默認值:由于 flex-grow、flex-shrink、flex-basis三個屬性值在不設置的情況下默認值分別為 0、1、auto,所以flex的默認值為:flex:0 1 auto;

.item {
    flex: 0 1 auto;
}
/*這種情況先根據width/height屬性決定元素的尺寸。
(如果項目的主尺寸為auto,則會以其內容大小為基準)
當剩余空間為正值時,伸縮項目無法伸縮,但當空間不足時,伸縮項目可收縮至其[最小]值。
默認狀態下,伸縮項目不會收縮至比其最小內容尺寸更小。
可以通過設置「min-width」或「min-height」屬性來改變這個默認狀態。*/

flex: 0 auto:由于之前提到過,若在flex的縮寫中省略了flex-shrink的值,則該值指定為 1,所以flex:0 auto就相當于flex:0 1 auto(也就是與flex取默認值一樣);

flex: initial:與flex:0 1 auto相同;

flex: auto: 若在flex的縮寫中省略了flex-grow和flex-shrink的值,則他們的值都指定為 1,所以flex:auto就相當于flex:1 1 auto;

.item {
    flex: auto;  /*相當于flex:1 1 auto;*/
}
/*根據width/height屬性決定元素的尺寸,但是完全可以伸縮,會吸收主軸上剩下的空間*/

flex:none:相當于flex: 0 0 auto;

.item {
    flex: none;  /*相當于flex:0 0 auto;*/
}
/*根據width/height屬性決定元素的尺寸,但是完全不可以伸縮*/

當flex取值為某個正數時,則這個正數是flex-grow的取值,由于在flex的縮寫中省略了flex-shrink和flex-basis的值,而他們在被省略了時的取值分別為1、0%,所以flex:1就相當于flex:1 1 0%;

.item {
    flex: 1;  /*相當于flex:1 1 0%;*/
}
/*以父容器的寬度為基數計算,元素完全可伸縮*/

當 flex 取值為一個長度或百分比,則視為 flex-basis 值,flex-grow 取 1,flex-shrink 取 1(注意 0% 是一個百分比而不是一個非負數字);

.item {
    flex:120px;  /*相當于flex:1 1 120px;*/
}
.item1 {
   flex: 0%; /*相當于flex:1 1 0%;*/
}

當 flex 取值為兩個非負數字,則分別視為 flex-grow 和 flex-shrink 的值,flex-basis 取 0%;

.item {
    flex:2 1;  /*相當于flex:2 1 0%;*/
}

當 flex 取值為一個非負數字和一個長度或百分比,則分別視為 flex-grow 和 flex-basis 的值,flex-shrink 取 1;

.item {
    flex:2 120px;  /*相當于flex:2 1 120px;*/
}

舉例

html如下:

<div class="box">
    <div class="item-1"></div>
    <div class="item-2"></div>
    <div class="item-3"></div>
  </div>

css如下:

.box {
  display: flex;
  width: 800px;
}
.box > div {
  height: 200px;
}
.item-1 {
  width: 160px;
  flex: 2 1 0%;
  background: #2ecc71;
}
.item-2 {
  width: 100px;
  flex: 2 1 auto;
  background: #3498db;
}
.item-3 {
  flex: 1 1 200px;
  background: #9b59b6;
}

得到的結果如下:

css中如何實現Flex布局的可伸縮性

主軸上父容器總尺寸為 800px

子元素的總基準值是:0% + auto + 200px = 300px,其中

  1. - 0% 即 0 * 800px = 0寬度

  2. - auto 對應取主尺寸即 100px

故剩余空間為 800px - 300px = 500px

伸縮放大系數之和為: 2 + 2 + 1 = 5

剩余空間分配如下:

  1. - item-1 和 item-2 各分配 2/5,各得 200px

  2. - item-3 分配 1/5,得 100px

各項目最終寬度為:

  1. - item-1 = 0% + 200px = 200px

  2. - item-2 = auto + 200px = 300px

  3. - item-3 = 200px + 100px = 300px

當 item-1 基準值取 0% 的時候,是把該項目視為零尺寸的,故即便聲明其尺寸為 160px,也并沒有什么用,形同虛設

而 item-2 基準值取 auto 的時候,根據規則基準值使用值是主尺寸值即 100px,故這 100px 不會納入剩余空間

關于“css中如何實現Flex布局的可伸縮性”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天津市| 油尖旺区| 调兵山市| 武川县| 松桃| 德清县| 和顺县| 伊宁市| 河南省| 峨眉山市| 江北区| 芜湖县| 宁国市| 泸溪县| 美姑县| 四子王旗| 都匀市| 兴义市| 米脂县| 寿阳县| 民勤县| 普定县| 民权县| 金山区| 朝阳县| 墨竹工卡县| 仪征市| 天气| 巴南区| 阳朔县| 札达县| 马山县| 黎城县| 商城县| 青铜峡市| 桂阳县| 晴隆县| 离岛区| 方山县| 忻城县| 宜宾县|