摘要:的屬性采用布局的元素,稱為容器,簡稱容器它的所有子元素自動成為容器成員,稱之為項目簡稱項目容器默認存在兩根軸水平主軸和垂直的交叉軸。子項在容器的當前行側軸縱軸方向上的對齊方式對影響與交叉點的起點對齊。負值對該屬性無效。
CSS3 彈性盒子(Flexible Box 或 Flexbox),彈性框布局,它具有定義一個可伸縮項目的能力。
flex元素可以根據flex-grow因子拉伸以填充可用空間,或根據flex-shrink因子收縮以防止溢出。
當不使用浮動,且彈性容器的外邊距也不需要與其內容的外邊距合并時,彈性盒子模型比起方框模型要好一些。
基本布局模塊:塊布局,內聯布局,表格布局,定位布局。
使用彈性框布局功能,可以更加輕松地設計復雜網頁布局,并且可以在屏幕和瀏覽器窗口大小發生改變時進行調整以保持元素的相對位置和大小。
flex作用
彈性框可減少對浮動(display屬性 + position屬性 + float屬性)和 表格布局 等各種布局方式的依賴。
flex布局可簡化的操作
構建這樣一種布局,即使屏幕和瀏覽器窗口大小發生改變可靈活調整,但包含彼此的相對位置和大小保持不變的元素。(如圖像和控件)
指定如何沿著一系列元素的水平軸或垂直軸重新分配多余空間,從而增加給定元素的大小。
指定如何沿著一系列元素的布局軸將多余空間重新分配到一系列元素之前,之后或之間。
指定如何將某個元素布局軸垂直方向的多余空間。(例如,已并排布局的按鈕上方或下方的多余空間) 移動到該元素的周圍。
控制元素在頁面上的視覺方向(例如,從上到下,從左到右,從右到左或從下到上),無需調整指定的writing-mode.
按照不同文檔對象模型 (DOM)所指定的排序方式,對屏幕上的元素重新排序。
writing-mode屬性:
span { width: 100px; height: 100px; background: chocolate; writing-mode: horizontal-tb; /* 默認屬性 */ writing-mode: vertical-lr; /* 行內元素變為塊級元素,垂直顯示 左邊 */ writing-mode: vertical-rl; /* 行內元素變為塊級元素,垂直顯示 右邊 */ }
兼容性
IOS 可以使用最新的flex布局
android4.4以下,只能兼容舊版的flexbox布局
android4.4及以上,可以使用最新的的flexbox布局
flex布局任何容器都可以指定flex屬性。
要啟用彈性框布局,需要首先創建一個彈性容器。彈性容器構成一個包容塊,用于容納其它內容(彈性項目)。
使用display屬性將值指定為:flex 或者 inline-flex.設置完Flex屬性以后,子元素的float,clear和vertical-align屬性將失效
將 display 設置為 flex 會導致元素的行為類似于塊級的彈性容器框。塊級彈性容器框會占用其父容器的完整寬度。將 display 設置為 inline-flex 會使元素的行為類似于內聯級彈性容器框,僅占用其所需的最低空間量,同時也不強加新行。
flex (new)
display: flex; display: inline-flex; display: -webkit-flex;
flex (old)
display: -webkit-box; display: -moz-box; display: -ms-box;Container的屬性
采用flex布局的元素,稱為flex容器(flex container),簡稱"容器". 它的所有子元素自動成為容器成員,稱之為flex項目(flex item), 簡稱"項目".
容器默認存在兩根軸:水平主軸(main axis)和垂直的交叉軸(cross axis)。
主軸開始的位置(與邊框的交叉點)叫做(main start),結束位置叫做(main ned)。
交叉軸的開始位置叫做(cross start)結束位置(cross end)。
項目默認沿著主軸排列。單個項目占據的主軸空間叫做(main size),占據的交叉軸空間叫做(cross size)
6個容器上的屬性
flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content
flex-directionflex-direction屬性決定主軸的方向(即item的排列方向)
.box { flex-direction: row | row-reverse | column | column-reverse; }
row(默認值) : 主軸為水平方向,起點在左端。
row-reverse: 主軸為水平方向,起點在右端。
column: 主軸為垂直方向,起點在上沿。
column-reverse: 主軸為垂直方向,起點在下沿。
123
order 屬性
flex-wrap 123
默認情況下,itme都排在一條線(軸線)上。flex-wrap屬性定義,如果一條軸線排列不下,如何換行。
.box { flex-wrap: nowrap | wrap | wrap-reverse; }
flex-wrap: nowrap;: 默認不換行
flex-wrap: wrap;: 換行第一行在上方
flex-wrap: wrap-reverse;: 換行,第一行在下方.
flex-wrap: nowrap;
flex-wrap: wrap;
flex-wrap: wrap-reverse;flex-flow
flex-flow屬性是flew-direction屬性和flex-wrap屬性的簡寫形式.默認值為:row nowrap
.box { flex-flow:|| ; }
flex-flow: row-reverse wrap;
同時具有 row-reverse: 主軸為水平方向,起點在右端 和 flex-wrap: wrap: 換行第一行在上方
justify-contentjustify-content屬性定義了item 在主軸上的對齊方式.
.box { justify-content:flex-start | flex-end | center | space-between | space-around }
flex-start: 行起始位置對齊。
flex-end: 行結束位置對齊。
space-between: 平均分布,起始位置。
space-around: 平均分布,終點加上自身位置。
center: 向行中間位置對齊。
align-itemsjustify-content: flex-start
abcjustify-content: flex-end
abcjustify-content: space-between
abcjustify-content: space-around
abcjustify-content: center
abc
align-items flex子項在flex容器的當前行側軸(縱軸)方向上的對齊方式.
對padding影響.
align-items:flex-start | flex-end | center | baseline | stretch
flex-start: 與交叉點的起點對齊。
flex-end: 與交叉點的終點對齊。
center: 與交叉點的中點對齊。
space-between: 與交叉軸兩端對齊,軸線之間的間隔平均分布。
space-around: 每根軸線兩側的間隔都相等。
stretch(默認值): 將軸線占滿這個交叉軸。
align-contentalign-items: flex-start
abcalign-items: flex-end
abcalign-items: baseline
abcalign-items: stretch
abcalign-items: center
abc
align-content: 屬性定義了多根軸線的對齊方式。如果item只有一根軸線,該屬性不起作用。
align-content: flex-start | flex-end | center | space-between | spce-around | stretch
flex-start: 與交叉軸的起點對齊
flex-end: 與交叉軸的終點對齊
center: 與交叉軸的中點對齊
space-between: 與交叉軸兩端對齊,軸線之間的間隔平均分布。
space-around: 每根軸線兩側的間隔都相等。
6個屬性設置在Item上。
order
flex-grow
flex-shrink
flex-basis
flex
align-self
orderorder屬性定義Item的排列順序。 數值越小,排列越靠前。 默認為0.
flex-grow abc
flex-grow屬性定義Item的放大比例,默認為0,即如果存在剩余空間,也不放大。
子級中的元素將按照比例占滿父級的width.
如果所有Item的flex-grow屬性都為1,則它們將等分剩余空間(如果有的話)。
如果一個Item的flex-grow屬性為2,其它Item都未1,則前者占據的剩余空間將比其它多一倍.
flex-shrink abc
flex-shrink屬性定義了Item的縮小比例。默認為1,即如果空間不足,該項目將縮小。
負值對該屬性無效。
flex-basis abc
設置
flex-basis:| auto; /* default auto */
flex-basis屬性定義了在分配多余空間之前,Item占據的主軸(main size)。瀏覽器根據這個屬性,計算主軸是否有多余空間。默認為auto,即Item本來的大小。
可以為跟width或height屬性一樣的值(比如:400px),則Item將占滿固定空間。
flex abc
flex: none | [ <"flex-grow"> <"flex-shrink">? || <"flex-basis"> ]
flex屬性是flex-grow,flex-shrink和flex-basis的簡寫。默認值為: 0 1 auto. 后兩個屬性可選。
該屬性有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)
align-self abc
.item { align-self: auto | flex-start | flex-end | center | baseline | stretch; }
align-self屬性允許單個item有與其它item不一樣的對齊方式,可覆蓋align-items屬性。默認值為auto,標識繼承父元素的align-items屬性,如果沒有父元素,則等同于strecth
該屬性可能取6個值,除了auto,其它都與align-items屬性完全一致。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/115466.html
閱讀 1825·2021-11-23 09:51
閱讀 941·2021-10-08 10:05
閱讀 3429·2021-09-26 09:55
閱讀 1036·2021-09-22 15:21
閱讀 1629·2021-09-09 09:33
閱讀 1259·2019-08-30 15:56
閱讀 1280·2019-08-30 15:55
閱讀 965·2019-08-30 13:19