摘要:布局的傳統(tǒng)解決方案,基于盒狀模型,依賴屬性屬性屬性。一基礎(chǔ)和術(shù)語(yǔ)布局是啥是的縮寫,意為彈性布局,用來(lái)為盒狀模型提供最大的靈活性。基本概念采用布局的元素,稱為容器,簡(jiǎn)稱容器。該屬性的個(gè)值分別表示具體對(duì)齊方式與軸的方向有關(guān)。
???????網(wǎng)頁(yè)布局(layout)是 CSS 的一個(gè)重點(diǎn)應(yīng)用。布局的傳統(tǒng)解決方案,基于盒狀模型,依賴 display 屬性 + position屬性 + float屬性。它對(duì)于那些特殊布局非常不方便,比如萬(wàn)惡的垂直居中。一、基礎(chǔ)和術(shù)語(yǔ) 1、flex布局是啥
???????2009年,W3C 提出了一種新的方案----Flex 布局,可以簡(jiǎn)便、完整、響應(yīng)式地實(shí)現(xiàn)各種頁(yè)面布局。目前,它已經(jīng)得到了所有瀏覽器的支持,這意味著,現(xiàn)在就能很安全地使用這項(xiàng)功能。(ie 10+支持flex布局,對(duì)于我現(xiàn)在的項(xiàng)目,因?yàn)槭褂胏ors解決跨域,所以對(duì)ie的支持也是ie10+,完美契合)
???????嘴上說著支持,但是ie從來(lái)不讓我們失望,flex在ie下的bug和解決方法,有需自取。
Flex 是 Flexible Box 的縮寫,意為"彈性布局",用來(lái)為盒狀模型提供最大的靈活性。
任何一個(gè)容器都可以指定為 Flex 布局。
.box{ display: flex; }
行內(nèi)元素也可以使用 Flex 布局。
.box{ display: inline-flex; }
Webkit 內(nèi)核的瀏覽器,必須加上-webkit前綴。當(dāng)然如果你也使用了無(wú)敵的autoprefixer就不需要這么做了。
.box{ display: -webkit-flex; /* Safari */ display: flex; }
還有一點(diǎn)需要注意的是設(shè)為 Flex 布局以后,子元素的float、clear和vertical-align屬性將失效。
2、基本概念采用 Flex 布局的元素,稱為 Flex 容器(flex container),簡(jiǎn)稱"容器"。它的所有子元素自動(dòng)成為容器成員,稱為 Flex 項(xiàng)目(flex item),簡(jiǎn)稱"項(xiàng)目"。
容器默認(rèn)存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點(diǎn))叫做main start,結(jié)束位置叫做main end;交叉軸的開始位置叫做cross start,結(jié)束位置叫做cross end。
項(xiàng)目默認(rèn)沿主軸排列。單個(gè)項(xiàng)目占據(jù)的主軸空間叫做main size,占據(jù)的交叉軸空間叫做cross size。
容器可以設(shè)置的屬性共有以下6個(gè)
flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content
1.1 flex-directionflex-direction屬性決定主軸的方向(即項(xiàng)目的排列方向)。
.box { flex-direction: row | row-reverse | column | column-reverse; }
該屬性的4個(gè)值分別表示:
row(默認(rèn)值):主軸為水平方向,起點(diǎn)在左端。
row-reverse:主軸為水平方向,起點(diǎn)在右端。
column:主軸為垂直方向,起點(diǎn)在上沿。
column-reverse:主軸為垂直方向,起點(diǎn)在下沿。
1.2 flex-wrap默認(rèn)情況下,項(xiàng)目都排在一條線(又稱"軸線")上。flex-wrap屬性定義,如果一條軸線排不下,如何換行。
.box{ flex-wrap: nowrap | wrap | wrap-reverse; }
該屬性的3個(gè)值分別表示:
nowrap(默認(rèn)):不換行。
wrap:換行,第一行在上方。
wrap-reverse:換行,第一行在下方。
1.3 flex-flowflex-flow屬性是flex-direction屬性和flex-wrap屬性的簡(jiǎn)寫形式,默認(rèn)值為row nowrap。
.box { flex-flow:1.4 justify-content屬性|| ; }
justify-content屬性定義了項(xiàng)目在主軸上的對(duì)齊方式。
.box { justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly; }
該屬性的6個(gè)值分別表示(具體對(duì)齊方式與軸的方向有關(guān)。下面假設(shè)主軸為從左到右):
flex-start(默認(rèn)值):左對(duì)齊
flex-end:右對(duì)齊
center: 居中
space-between:兩端對(duì)齊,項(xiàng)目之間的間隔都相等。
space-around:每個(gè)項(xiàng)目?jī)蓚?cè)的間隔相等。所以,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍。
space-evenly:每個(gè)項(xiàng)目之前的間距以及到邊緣的間距相等
1.5 align-items屬性align-items屬性定義項(xiàng)目在交叉軸上如何對(duì)齊。
.box { align-items: flex-start | flex-end | center | baseline | stretch; }
該屬性的5個(gè)值分別表示(具體的對(duì)齊方式與交叉軸的方向有關(guān),下面假設(shè)交叉軸從上到下):
flex-start:交叉軸的起點(diǎn)對(duì)齊。
flex-end:交叉軸的終點(diǎn)對(duì)齊。
center:交叉軸的中點(diǎn)對(duì)齊。
baseline: 項(xiàng)目的第一行文字的基線對(duì)齊。
stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或設(shè)為auto,將占滿整個(gè)容器的高度。
1.6 align-content屬性align-content屬性定義了多根軸線的對(duì)齊方式。如果項(xiàng)目只有一根軸線,該屬性不起作用。
.box { align-content: flex-start | flex-end | center | space-between | space-around | stretch; }
該屬性的6個(gè)值分別表示:
flex-start:與交叉軸的起點(diǎn)對(duì)齊。
flex-end:與交叉軸的終點(diǎn)對(duì)齊。
center:與交叉軸的中點(diǎn)對(duì)齊。
space-between:與交叉軸兩端對(duì)齊,軸線之間的間隔平均分布。
space-around:每根軸線兩側(cè)的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
stretch(默認(rèn)值):軸線占滿整個(gè)交叉軸。
2、項(xiàng)目的屬性項(xiàng)目可以設(shè)置的屬性同樣有6個(gè):
order
flex-grow
flex-shrink
flex-basis
flex
align-self
2.1 order默認(rèn)情況下,項(xiàng)目按源順序排列。但是order屬性可以控制它們?cè)趂lex容器中的顯示順序。
.item { order:2.2 flex-grow; /* default 0 */ }
flex-grow屬性定義項(xiàng)目的放大比例,如果所有項(xiàng)目的flex-grow屬性都為1,則它們將等分剩余空間(如果有的話)。如果一個(gè)項(xiàng)目的flex-grow屬性為2,其他項(xiàng)目都為1,則前者占據(jù)的剩余空間將比其他項(xiàng)多一倍。
.item { flex-grow:2.3 flex-shrink; /* default 0 */ }
與flex-grow想反,flex-shrink屬性定義了項(xiàng)目的縮小比例,如果所有項(xiàng)目的flex-shrink屬性都為1,當(dāng)空間不足時(shí),都將等比例縮小。如果一個(gè)項(xiàng)目的flex-shrink屬性為0,其他項(xiàng)目都為1,則空間不足時(shí),前者不縮小。
.item { flex-shrink:2.4 flex-basis; /* default 1 */ }
flex-basis屬性定義了在分配多余空間之前,項(xiàng)目占據(jù)的主軸空間(main size)。瀏覽器根據(jù)這個(gè)屬性,計(jì)算主軸是否有多余空間。它的默認(rèn)值為auto,即項(xiàng)目的本來(lái)大小。
.item { flex-basis:| auto; /* default auto */ }
它可以設(shè)為跟width或height屬性一樣的值(比如350px),則項(xiàng)目將占據(jù)固定空間。
(https://css-tricks.com/snippe... 中講到這個(gè)關(guān)鍵字還沒有得到很好的支持,因此很難測(cè)試,也很難知道它的兄弟最大內(nèi)容、最小內(nèi)容和適合內(nèi)容做什么。)
flex屬性是flex-grow, flex-shrink 和 flex-basis的簡(jiǎn)寫,默認(rèn)值為0 1 auto。后兩個(gè)屬性可選。
.item { flex: none | [ <"flex-grow"> <"flex-shrink">? || <"flex-basis"> ] }
該屬性有兩個(gè)快捷值:auto (1 1 auto) 和 none (0 0 auto)。
建議優(yōu)先使用這個(gè)屬性,而不是多帶帶寫三個(gè)分離的屬性,因?yàn)闉g覽器會(huì)推算相關(guān)值。
align-self屬性允許單個(gè)項(xiàng)目有與其他項(xiàng)目不一樣的對(duì)齊方式,可覆蓋align-items屬性。默認(rèn)值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。
.item { align-self: auto | flex-start | flex-end | center | baseline | stretch; }
該屬性可能取6個(gè)值,除了auto,其他都與align-items屬性完全一致。
三、路漫漫其修遠(yuǎn)兮???????其實(shí)flex布局沒什么自己的理解,發(fā)這篇文章單純?yōu)榱思由钣∠笞鰝€(gè)總結(jié),這篇文章大部分copy自flex布局教程和A Complete Guide to Flexbox
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/114737.html
摘要:最新開發(fā)的項(xiàng)目用了的新特性布局,遇到了兼容性的問題。那么新舊版本是什么布局分為舊版本,過渡版本,以及現(xiàn)在的標(biāo)準(zhǔn)版本。所以如果你只是寫新版本的語(yǔ)法形式,是肯定存在兼容性問題的。 最新開發(fā)h5的項(xiàng)目用了css的新特性flex布局,遇到了CSS兼容性的問題。在網(wǎng)上找到了如下的解決辦法。 我寫頁(yè)面的時(shí)候用到過很多的flex布局,覺得非常好用。下面附上一篇不錯(cuò)的flex布局介紹的文章。?Flex...
摘要:但這會(huì)帶來(lái)高度塌陷的問題,所以要清除浮動(dòng)。核心內(nèi)置類,會(huì)嘗試先于例外的是,利用的是轉(zhuǎn)換。安全性請(qǐng)求可被緩存,請(qǐng)求保存在瀏覽器的歷史記錄中則不能被緩存。與相比,的安全性較差,因?yàn)榘l(fā)送的數(shù)據(jù)是的一部分。 1.實(shí)現(xiàn)三欄布局(左右兩邊固定寬度,中間自適應(yīng)) 1)浮動(dòng)布局左右兩邊固定寬度,并分別設(shè)置float:left和float:right。(但這會(huì)帶來(lái)高度塌陷的問題,所以要清除浮動(dòng)。清除浮動(dòng)...
摘要:正則表達(dá)式實(shí)現(xiàn)快速古詩(shī)匹配作者簡(jiǎn)介是推出的一個(gè)天挑戰(zhàn)。數(shù)據(jù)匹配操作使用基礎(chǔ)參考文檔項(xiàng)目源碼分析正則找出匹配的詩(shī)句替換高亮的標(biāo)簽構(gòu)造值會(huì)返回帶搜索關(guān)鍵字的新數(shù)組。執(zhí)行對(duì)大小寫不敏感的匹配。 Day06 - Fetch、filter、正則表達(dá)式實(shí)現(xiàn)快速古詩(shī)匹配 作者:?liyuechun 簡(jiǎn)介:JavaScript30 是 Wes Bos 推出的一個(gè) 30 天挑戰(zhàn)。項(xiàng)目免費(fèi)提供了 30 ...
摘要:正則表達(dá)式實(shí)現(xiàn)快速古詩(shī)匹配作者簡(jiǎn)介是推出的一個(gè)天挑戰(zhàn)。數(shù)據(jù)匹配操作使用基礎(chǔ)參考文檔項(xiàng)目源碼分析正則找出匹配的詩(shī)句替換高亮的標(biāo)簽構(gòu)造值會(huì)返回帶搜索關(guān)鍵字的新數(shù)組。執(zhí)行對(duì)大小寫不敏感的匹配。 Day06 - Fetch、filter、正則表達(dá)式實(shí)現(xiàn)快速古詩(shī)匹配 作者:?liyuechun 簡(jiǎn)介:JavaScript30 是 Wes Bos 推出的一個(gè) 30 天挑戰(zhàn)。項(xiàng)目免費(fèi)提供了 30 ...
閱讀 4005·2023-04-26 00:36
閱讀 2744·2021-11-16 11:44
閱讀 1184·2021-11-15 17:58
閱讀 1745·2021-09-30 09:47
閱讀 1287·2019-08-30 13:05
閱讀 1614·2019-08-30 12:55
閱讀 2490·2019-08-30 11:02
閱讀 2886·2019-08-29 17:01