摘要:簡介首先先聊一聊布局是什么布局表面上類似于塊布局,但是它缺少許多可以在塊布局中使用的更復(fù)雜的文本或文檔中心屬性,如浮動(dòng)和列,與此同時(shí),它也獲得了一些簡單而強(qiáng)大的布局工具,它可以自動(dòng)調(diào)整,計(jì)算元素在容器空間的大小重要概念容器父元素顯示地設(shè)置項(xiàng)
簡介
首先先聊一聊Flex布局是什么?Flex布局表面上類似于塊布局,但是它缺少許多可以在塊布局中使用的更復(fù)雜的文本或文檔中心屬性,如浮動(dòng)和列,與此同時(shí),它也獲得了一些簡單而強(qiáng)大的布局工具,它可以自動(dòng)調(diào)整,計(jì)算元素在容器空間的大小
重要概念Flex容器:父元素顯示地設(shè)置display:flex.
Flex項(xiàng)目:Flex容器內(nèi)的子項(xiàng)目
Flex容器中默認(rèn)存在一根水平的主軸(main axis)和豎直的交叉軸(cross axis),主軸開始的位置叫main start,結(jié)束位置叫main end,交叉軸開始的位置cross start結(jié)束的位置叫cross end,F(xiàn)lex容器中的項(xiàng)目將會(huì)沿著主軸或者交叉軸排布。比較重要的幾個(gè)概念介紹完,下面將會(huì)結(jié)合代碼介紹對(duì)應(yīng)的屬性
Flex容器屬性容器屬性主要有一下六個(gè):
flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content
flex-direction此屬性決定了主軸的排布方向,可以取四個(gè)值:
row(默認(rèn)值):主軸沿水平方向從左至右排列
row-reverse:主軸沿水平方向從右至左排列
column:主軸沿垂直方向從上至下排列
column-reverse:主軸沿垂直方向從下至上排列
123
.container{ display: flex; flex-direction: row; } .item{ flex: 1; margin: 10px; background-color: #ccc; }
當(dāng)flex-direction為row(默認(rèn)值)時(shí):
當(dāng)flex-direction為column(默認(rèn)值)時(shí):
flex-wrap此屬性決定了是否換行,可取三個(gè)值
nowrap(默認(rèn)值):不換行
wrap:換行,第一行在上方
wrap-reverse:換行,第一行在下方
.container{ display: flex; flex-wrap: nowrap; width: 400px; } .item{ width: 200px; margin: 10px; background-color: #ccc; }
當(dāng)flex-wrap屬性值取默認(rèn)的nowrap時(shí),容器下面元素不會(huì)換行,且如果容器項(xiàng)目的寬度和超過容器,則容易項(xiàng)目寬度將會(huì)按照比例縮小
當(dāng)flex-wrap屬性值取默認(rèn)的wrap時(shí),容器下面元素超過容器寬度就會(huì)換行顯示
flex-flowflex-flow屬性是flex-direction和flex-wrap屬性的簡寫,默認(rèn)是 row nowrap
justify-content此屬性定義了主軸上的項(xiàng)目對(duì)齊方式,可取五個(gè)值:
flex-start(默認(rèn)值):左對(duì)齊
flex-end:右對(duì)齊
center:水平居中
space-between:兩端對(duì)齊
space-around:項(xiàng)目兩側(cè)間距相等
.container{ display: flex; justify-content: flex-start; }
當(dāng)justify-content為flex-start時(shí),主軸上的項(xiàng)目將靠左對(duì)齊
當(dāng)justify-content為flex-end時(shí),主軸上的項(xiàng)目將靠右對(duì)齊
當(dāng)justify-content為flex-end時(shí),主軸上的項(xiàng)目將居中對(duì)齊
當(dāng)justify-content為space-between時(shí),主軸上的項(xiàng)目將兩端對(duì)齊,且項(xiàng)目之間的間距相等
當(dāng)justify-content為space-around時(shí),項(xiàng)目兩側(cè)間距相等,項(xiàng)目之間的間距是側(cè)邊間距兩倍
align-itemsalign-items控制項(xiàng)目在豎直交叉軸上的對(duì)齊方式,可取五個(gè)值
flex-start:交叉軸起點(diǎn)對(duì)齊,即上對(duì)齊
flex-end:交叉軸終點(diǎn)對(duì)齊,即下對(duì)齊
center:交叉軸中間對(duì)齊,即豎直居中
baseline:沿基線對(duì)齊,基線與其交叉起始邊距邊緣之間最大距離的項(xiàng)目被放置在該行的交叉起始邊緣上(即基線以距離交叉軸距離最遠(yuǎn)的項(xiàng)目下邊界為準(zhǔn))如果該項(xiàng)在必需的軸沒有基線,則從Flex項(xiàng)目的邊框中合成一個(gè)基線。
stretch(默認(rèn)值):默認(rèn)值,若項(xiàng)目沒有設(shè)置高度時(shí),項(xiàng)目高度會(huì)拉伸到預(yù)容器高度一致,存在高度設(shè)置,以設(shè)置屬性為準(zhǔn)
.container{ display: flex; height: 400px; align-items: flex-start; border: 1px solid #000; } .item{ width: 200px; height: 200px; margin: 0 10px; background-color: #ccc; }
align-items取值為flex-start時(shí),靠頂端對(duì)齊
align-items取值為flex-end時(shí),靠底端對(duì)齊
align-items取值為flex-center時(shí),豎直居中對(duì)齊
.container{ display: flex; height: 400px; align-items: flex-start; border: 1px solid #000; } .item{ width: 200px; height: 200px; margin: 0 10px; background-color: #ccc; } .item:nth-child(1) { height: 100px; line-height: 100px; }
align-items取值為baseline時(shí),基線對(duì)齊
align-content此屬性用于多行排列的Flex容器,對(duì)單行容器不起作用,排列效果和align-items一樣,但是沒有baseline屬性,屬性取值:
flex-start:交叉軸起點(diǎn)對(duì)齊,即上對(duì)齊
flex-end:交叉軸終點(diǎn)對(duì)齊,即下對(duì)齊
center:交叉軸中間對(duì)齊,即豎直居中
stretch(默認(rèn)值):項(xiàng)目高度與容器高度一樣
space-between:兩端對(duì)齊
space-around:項(xiàng)目兩側(cè)間距相等
.container{ display: flex; height: 800px; width: 400px; flex-wrap: wrap; align-content: flex-start; border: 1px solid #000; } .item{ width: 200px; height: 200px; margin: 10px; background-color: #ccc; }
這是align-content取值為flex-start時(shí),由于取值和align-item表現(xiàn)一致,因此不再舉例其他屬性
項(xiàng)目屬性 order此屬性可以定義項(xiàng)目的排列順序,數(shù)值越小的項(xiàng)目越靠前,默認(rèn)值為0
.container{ display: flex; height: 400px; align-content: flex-start; border: 1px solid #000; } .item{ width: 200px; height: 200px; margin: 10px; background-color: #ccc; } .item:nth-child(1) { order: 2; } .item:nth-child(2) { order: 1; } .item:nth-child(3) { order: -1; }flex-grow和flex-shrink
這兩個(gè)屬性體現(xiàn)Flex布局的靈活性,它們定義了容器中項(xiàng)目的放大和縮小,flex-grow的默認(rèn)值為0,即默認(rèn)情況即使有剩余空間也不會(huì)自動(dòng)放大,flex-shrink默認(rèn)值為1,即在空間不足的情況下,容器項(xiàng)目會(huì)自動(dòng)縮小
.container{ display: flex; width: 1000px; border: 1px solid #000; } .item{ width: 200px; height: 200px; margin: 10px; background-color: #ccc; }
默認(rèn)情況下容器寬度比項(xiàng)目寬度大時(shí),flex-grow默認(rèn)值為0時(shí),項(xiàng)目不會(huì)自動(dòng)拉伸
當(dāng)將flex-grow的值設(shè)置為1時(shí),項(xiàng)目將會(huì)自動(dòng)拉伸占滿剩余空間
.item:nth-child(1) { flex-grow: 2; }
如圖所示當(dāng)將容器的第一個(gè)項(xiàng)目flex-grow設(shè)為2時(shí),其他項(xiàng)目flex-grow為1時(shí),容器的剩余空間會(huì)按照flex-grow的比例將剩余的空間分配給各個(gè)項(xiàng)目
.container{ display: flex; width: 500px; border: 1px solid #000; } .item{ width: 200px; height: 200px; margin: 10px; background-color: #ccc; }
當(dāng)flex-shrink的值為默認(rèn)1時(shí),可以看到容器的項(xiàng)目寬度和比容器寬度要大時(shí),會(huì)自動(dòng)進(jìn)行縮小,當(dāng)手動(dòng)設(shè)置flex-shrink為0時(shí),將不會(huì)進(jìn)行縮小,如下圖
flex-basis此屬性設(shè)置項(xiàng)目占據(jù)主軸的空間,當(dāng)不設(shè)置值時(shí),默認(rèn)為auto,即項(xiàng)目本來的大小,也可以手動(dòng)設(shè)置占據(jù)主軸的空間大小
.container{ display: flex; width: 500px; border: 1px solid #000; } .item{ width: 100px; height: 200px; margin: 10px; background-color: #ccc; } .item:nth-child(1) { flex-basis: 150px; }flex簡寫
flex屬性是flex-grow、flex-shrink、flex-basis的簡寫形式,默認(rèn)值是0 1 auto,該屬性有兩個(gè)快捷值,auto(1 1 auto),none(0 0 auto)
align-self此屬性定義了單個(gè)項(xiàng)目的對(duì)齊方式,取值和表現(xiàn)和align-items基本一致,多了一個(gè)值auto即默認(rèn)值,表示繼承容器的align-items屬性,取值auto | flex-start | flex-end | center | baseline | stretch
.container{ display: flex; width: 500px; border: 1px solid #000; } .item{ width: 100px; height: 200px; margin: 10px; background-color: #ccc; } .item:nth-child(1) { height: 100px; align-self: center; }
此處就舉了align-self: center時(shí)的例子,其余表現(xiàn)和align-items表現(xiàn)一致,只不過align-self作用在單個(gè)項(xiàng)目上
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/51398.html
摘要:我們會(huì)在本文給出一個(gè)易于理解的入門介紹。項(xiàng)的順序的屬性另外一個(gè)的能力,是能夠輕松改變?cè)氐娘@示順序。她想讓成為頁面的第一個(gè)元素,顯示在之前??山邮艿闹涤校蛘咭粋€(gè)數(shù)字后面緊跟著,,或其他長度單位。 近幾年,CSS領(lǐng)域出現(xiàn)了一些復(fù)雜的專用布局工具,用以代替原有的諸如使用表格、浮動(dòng)和絕對(duì)定位之類的各種變通方案。Flexbox,或者說是彈性盒子布局模塊(Flexible Box Layout...
摘要:默認(rèn)值如果項(xiàng)目未設(shè)置高度或設(shè)為,將占滿整個(gè)容器的高度。與交叉軸兩端對(duì)齊,軸線之間的間隔平均分布。該屬性有兩個(gè)快捷值和。默認(rèn)值為,表示繼承父元素的屬性,如果沒有父元素,則等同于。該屬性可能取個(gè)值,除了,其他都與屬性完全一致前幾天看了阮一峰的Flex布局教程,講的很不錯(cuò),總結(jié)一下,有興趣的可以去看原文http://www.ruanyifeng.com/blog/2015/07/flex-gram...
摘要:我們會(huì)在本文給出一個(gè)易于理解的入門介紹。項(xiàng)的順序的屬性另外一個(gè)的能力,是能夠輕松改變?cè)氐娘@示順序。她想讓成為頁面的第一個(gè)元素,顯示在之前??山邮艿闹涤?,或者一個(gè)數(shù)字后面緊跟著,,或其他長度單位。 轉(zhuǎn)載請(qǐng)注明出處:葡萄城官網(wǎng),葡萄城為開發(fā)者提供專業(yè)的開發(fā)工具、解決方案和服務(wù),賦能開發(fā)者。 原文出處:https://www.sitepoint.com/flexbox-css-flexible-...
摘要:年末促銷葡萄城歲末福利火熱放送中近幾年,領(lǐng)域出現(xiàn)了一些復(fù)雜的專用布局工具,用以代替原有的諸如使用表格浮動(dòng)和絕對(duì)定位之類的各種變通方案。重點(diǎn)推薦年末促銷葡萄城歲末福利火熱放送中靈活高效的前端開發(fā)工具包,可快速搭建企業(yè)應(yīng)用程序 轉(zhuǎn)載請(qǐng)注明出處:葡萄城官網(wǎng),葡萄城為開發(fā)者提供專業(yè)的開發(fā)工具、解決方案和服務(wù),賦能開發(fā)者。 【年末促銷】葡萄城 2018 歲末福利火熱放送中 近幾年,CSS領(lǐng)域出...
閱讀 2126·2021-11-23 09:51
閱讀 3712·2021-10-20 13:49
閱讀 1718·2021-09-06 15:13
閱讀 1828·2021-09-06 15:02
閱讀 3181·2021-09-02 15:11
閱讀 899·2019-08-29 15:37
閱讀 1744·2019-08-29 13:24
閱讀 2283·2019-08-29 11:28