摘要:所有內(nèi)容均源自阮一峰老師的文章布局教程語法篇,不過此總結(jié)都是結(jié)合平時(shí)使用的自我表述。引言布局使得一個(gè)框體內(nèi)部的排版更為便捷,比如柵格排版,自適應(yīng)分配長寬,垂直居中等,原來可能需要很多樣式配合來完成,使用,就變得更了。
所有內(nèi)容均源自阮一峰老師的文章Flex 布局教程:語法篇,不過此總結(jié)都是結(jié)合平時(shí)使用的自我表述。引言
Flex布局使得一個(gè)框體內(nèi)部的排版更為便捷,比如柵格排版,自適應(yīng)分配長寬,垂直居中等,原來可能需要很多樣式配合來完成,使用flex,就變得更native了。
Flex布局主要由兩層結(jié)構(gòu)實(shí)現(xiàn),外層container和內(nèi)層item,當(dāng)然內(nèi)層item也可以是更內(nèi)層的container
容器:外層container
項(xiàng)目:內(nèi)層item
主軸:item的排列方向
交叉軸:與主軸垂直
flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content
flex-direction主軸的方向
// row 自左向右 // row-reverse 自右向左 // column 自上而下 // row 自下向上 flex-direction: row(default) | row-reverse | column | column-reverse;flex-wrap
控制項(xiàng)目的換行規(guī)則,因?yàn)槟J(rèn)不換號,當(dāng)項(xiàng)目的寬度之和大于容器的寬度時(shí),會根據(jù)項(xiàng)目的一些屬性決定實(shí)際寬度分配
// nowrap 不換行 // wrap 換行,新行在下方 // wrap-reverse 換行,新行在上方 flex-wrap: nowrap(default) | wrap | wrap-reverse;flex-flow
是flex-direction和flex-wrap的縮寫
// 默認(rèn) flex-flow: row nowrap flex-flow:justify-content|| ;
主軸上的對齊方式
justify-content: flex-start(default) | flex-end | center | space-between | space-around;align-items
交叉軸上的對齊方式
// flex-start 交叉軸的起點(diǎn)對齊 // flex-end 交叉軸的終點(diǎn)對齊 // center 交叉軸的中點(diǎn)對齊 // baseline 項(xiàng)目的第一行文字的基線對齊 // stretch 如果項(xiàng)目未設(shè)置高度或設(shè)為auto,將占滿整個(gè)容器的高度 align-items: flex-start | flex-end | center | baseline | stretch(default);align-content
定義了多根軸線的對齊方式。如果項(xiàng)目只有一根軸線,該屬性不起作用。
// flex-start 與交叉軸的起點(diǎn)對齊 // flex-end 與交叉軸的終點(diǎn)對齊 // center 與交叉軸的中點(diǎn)對齊 // space-between 與交叉軸兩端對齊,軸線之間的間隔平均分布 // space-around 每根軸線兩側(cè)的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍 // stretch 軸線占滿整個(gè)交叉軸 align-content: flex-start | flex-end | center | space-between | space-around | stretch(default);
重點(diǎn)看上圖的stretch,從item設(shè)了高度和沒設(shè)高度/auto的區(qū)別可看出,stretch的原理是將交叉軸根據(jù)行數(shù)平分(交叉軸長度/行數(shù))成若干份,如果設(shè)了高度,就用真是高度,沒設(shè)高度就填充單份高度。
order
flex-grow
flex-shrink
flex-basis
flex
align-self
order定義項(xiàng)目的排列順序。數(shù)值越小,排列越靠前,可以是負(fù)數(shù),相同時(shí)依dom順序。
order:flex-grow; // 0 default
定義項(xiàng)目的放大比例,默認(rèn)為0,即如果存在剩余空間,也不放大。負(fù)數(shù)無效,瀏覽器視作默認(rèn)值0。
flex-grow:; // 0 default
注意放大比例是從剩余空間分配的,上圖item最終實(shí)際寬度(px):
圖一:
剩余寬度restWidth = 300-3*50
紅色寬度redWidth = 1/3*restWidth+50
黃色寬度yellowWidth = 2/3*restWidth+50
綠色寬度greenWidth = 50
圖二依次類推
圖三因?yàn)闆]有剩余寬度,發(fā)揮作用的是flex-shrink
定義了項(xiàng)目的縮小比例,即如果空間不足,該項(xiàng)目將縮小,flex-shrink屬性為0時(shí)項(xiàng)目不縮小,負(fù)數(shù)無效,瀏覽器視作默認(rèn)值1。
flex-shrink:; // 1 default
注意當(dāng)flex-shrink屬性為0的項(xiàng)目總寬度大于等于容器寬度時(shí),即沒有剩余空間分配時(shí),其余flex-shrink屬性不為0的項(xiàng)目寬度會縮小成剛好能夠容納內(nèi)容,padding,margin依然有效。上圖item最終實(shí)際寬度(px):
圖一:
剩余寬度restWidth = 300-3*100 = 0
所以redWidth和yellowWidth變成了能夠容納內(nèi)容的最小寬度
圖二:
剩余寬度restWidth = 300-2*100 = 100
所以redWidth和yellowWidth按照某種比例分配了restWidth,分配策略還沒弄清楚
flex-grow和flex-shrink都提到了剩余空間,其實(shí)就是根據(jù)這個(gè)屬性計(jì)算的,它的默認(rèn)值為auto,即項(xiàng)目的本來大小。bootstrap4的柵格系統(tǒng)就是用了這個(gè)屬性替代了bootstrap3的float:left+width%組合。
flex-basis:flex| auto; // auto default
是flex-grow, flex-shrink 和 flex-basis的簡寫,默認(rèn)值為0 1 auto。后兩個(gè)屬性可選。該屬性有兩個(gè)快捷值:auto (1 1 auto) 和 none (0 0 auto)。bootstrap4的柵格系統(tǒng)用的是(0 0 %)
flex: none | [ <"flex-grow"> <"flex-shrink">? || <"flex-basis"> ]align-self
允許單個(gè)項(xiàng)目有與其他項(xiàng)目不一樣的對齊方式,可覆蓋align-items屬性。默認(rèn)值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。
align-self: auto | flex-start | flex-end | center | baseline | stretch;
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/100506.html
摘要:它的所有子元素自動成為容器成員,稱為項(xiàng)目,簡稱項(xiàng)目。容器有兩個(gè)軸,一個(gè)水平主軸一個(gè)垂直交叉軸,起點(diǎn)終點(diǎn)都是容器的邊界。為垂直交叉軸對齊方式,擁有的屬性如下交叉軸的起點(diǎn)對齊。將占滿整個(gè)容器的高度。 啥是彈性布局(問號臉)?以前盒子的布局都是使用position、float、display來布局的,其實(shí)超級煩的,最近發(fā)現(xiàn)了一個(gè)知識點(diǎn),那就彈性布局,那就讓我們來看看什么是彈性布局吧! Wha...
摘要:經(jīng)典的粘連布局參考文章鏈接在文章末尾,簡單的語言總結(jié)如下經(jīng)典的粘連布局就是。當(dāng)元素比較短的時(shí)候比如小于屏幕的高度,我們期望這個(gè)元素能夠粘連在屏幕的底部。 經(jīng)典的粘連footer布局 參考文章鏈接在文章末尾,簡單的語言總結(jié)如下: 經(jīng)典的粘連footer布局就是。我們有一塊內(nèi)容。當(dāng)?shù)母叨茸銐蜷L的時(shí)候,緊跟在后面的元素會跟在元素的后面。當(dāng)元素比較短的時(shí)候(比如小于屏幕的高度),我們期望這個(gè)元...
摘要:所有內(nèi)容均源自阮一峰老師的文章布局教程語法篇,不過此總結(jié)都是結(jié)合平時(shí)使用的自我表述。引言布局使得一個(gè)框體內(nèi)部的排版更為便捷,比如柵格排版,自適應(yīng)分配長寬,垂直居中等,原來可能需要很多樣式配合來完成,使用,就變得更了。 所有內(nèi)容均源自阮一峰老師的文章Flex 布局教程:語法篇,不過此總結(jié)都是結(jié)合平時(shí)使用的自我表述。 引言 Flex布局使得一個(gè)框體內(nèi)部的排版更為便捷,比如柵格排版,自適應(yīng)分...
摘要:所有內(nèi)容均源自阮一峰老師的文章布局教程語法篇,不過此總結(jié)都是結(jié)合平時(shí)使用的自我表述。引言布局使得一個(gè)框體內(nèi)部的排版更為便捷,比如柵格排版,自適應(yīng)分配長寬,垂直居中等,原來可能需要很多樣式配合來完成,使用,就變得更了。 所有內(nèi)容均源自阮一峰老師的文章Flex 布局教程:語法篇,不過此總結(jié)都是結(jié)合平時(shí)使用的自我表述。 引言 Flex布局使得一個(gè)框體內(nèi)部的排版更為便捷,比如柵格排版,自適應(yīng)分...
閱讀 3713·2021-11-11 16:55
閱讀 1655·2021-10-08 10:04
閱讀 3591·2021-09-27 13:36
閱讀 2784·2019-08-30 15:53
閱讀 1870·2019-08-30 11:17
閱讀 1272·2019-08-29 16:55
閱讀 2111·2019-08-29 13:57
閱讀 2526·2019-08-29 13:13