摘要:布局也經(jīng)歷了一段演變歷史。不同于將要出現(xiàn)的網(wǎng)格布局針對(duì)目標(biāo)為大比例布局,彈性盒布局更適用于應(yīng)用組件和小比例布局。常規(guī)布局是基于塊和內(nèi)聯(lián)流方向,而布局是基于流。
前言
你還在用display+position+float來(lái)進(jìn)行css布局嗎?有沒有覺得用傳統(tǒng)的這種布局方法來(lái)實(shí)現(xiàn)特殊布局特別麻煩困難,例如:垂直居中。今天來(lái)記錄一下自己對(duì)flex布局的了解(雖然不算神馬新東西了都可以說(shuō)是舊東西了~~~)
歷史2009年,W3C提出了一種新的方案 —— Flex布局,可以簡(jiǎn)便、完整、響應(yīng)式地實(shí)現(xiàn)各種頁(yè)面布局。
flex布局也經(jīng)歷了一段演變歷史。當(dāng)你用google搜索flex時(shí)你會(huì)發(fā)現(xiàn)很多“過(guò)時(shí)”的資料信息。
如果你正在瀏覽一篇關(guān)于flexbox的博客時(shí)看到display:box或一個(gè)屬性為box-{*},那么你正在瀏覽的是2009年版本的flexbox
如果你正在瀏覽一篇關(guān)于flexbox的博客時(shí)看到display:flexbox或一個(gè)flex()函數(shù),那么你正在瀏覽的是2011年版本的flexbox
如果你正在瀏覽一篇關(guān)于flexbox的博客時(shí)看到display:flex和flex-{*}的一系列屬性,那么你正在瀏覽的是現(xiàn)在版本的flexbox
目前,它已經(jīng)得到了所有瀏覽器的支持,網(wǎng)頁(yè)端瀏覽器兼容性如下:
移動(dòng)端瀏覽器兼容性:
概念Flexbox布局( Flexible Box 或CSS3 彈性布局),是CSS3中的一種新的布局模式,可以自動(dòng)調(diào)整子元素的高和寬,來(lái)很好的填充任何不同屏幕大小的顯示設(shè)備中的可用顯示空間,收縮內(nèi)容防止內(nèi)容溢出,確保元素?fù)碛星‘?dāng)?shù)男袨榈牟季址绞?。使用Flexbox來(lái)布局更容易,可以使用更少的代碼,更簡(jiǎn)單的方式實(shí)現(xiàn)更復(fù)雜的布局,例如對(duì)齊方式,排列方向,排列順序(這也是Flexbox布局的核心能力所在),彈性盒中的子元素通過(guò)在各個(gè)方向放置就可以以彈性的尺寸適應(yīng)父元素的顯示區(qū)域。由于子元素的顯示順序和它們?cè)诖a中 的順序是獨(dú)立的,通過(guò)使用彈性盒,定位子元素變得更加簡(jiǎn)單,復(fù)雜的布局也能夠使用更清晰的代碼更簡(jiǎn)單的實(shí)現(xiàn)。獨(dú)立顯示被設(shè)定成只針對(duì)可見元素,而不是基于代碼的聲明和導(dǎo)航順序。
不同于塊級(jí)元素基于垂直方向布局以及行內(nèi)元素基于水平方向布局,彈性盒布局的算法是方向無(wú)關(guān)的。 雖然塊級(jí)元素布局在頁(yè)面中工作良好,但是其定義不足以支持那種需要根據(jù)用戶代理從豎直切換成水平等變化而進(jìn)行方向切換、大小調(diào)整、拉伸、收縮的引用組件。不同于將要出現(xiàn)的網(wǎng)格布局針對(duì)目標(biāo)為大比例布局,彈性盒布局更適用于應(yīng)用組件和小比例布局。這兩種都是CSS工作組為了能與不同用戶代理、不同書寫模式和其他彈性需要進(jìn)行協(xié)作而做出的努力。
常規(guī)布局是基于塊和內(nèi)聯(lián)流方向,而Flex布局是基于flex-flow流。先看一張圖:
1. flex container:flex容器/彈性容器flex容器是flex元素的父元素。通過(guò)設(shè)置display屬性的值為flex或inline-flex定義。
舊版本屬性值:
- box:將對(duì)象作為彈性容器顯示(最老版本-2009) - inline-box:將對(duì)象作為內(nèi)聯(lián)塊級(jí)彈性容器顯示(最老版本-2009) - flexbox:將對(duì)象作為彈性容器顯示。(過(guò)渡版本-2011) - inline-box: 將對(duì)象作為內(nèi)聯(lián)塊級(jí)彈性容器顯示。(過(guò)渡版本-2011)2. flex item:flex子元素或彈性子元素
flex容器的每一個(gè)子元素均為一個(gè)flex子元素。注意:flex容器直接包含的文本變?yōu)槟涿膹椥宰釉?,同時(shí)flexbox布局和原來(lái)的布局是兩套概念,所以部分css屬性在flex子元素中將不起作用,如:float,clear,vertical-align,column-*等
###3. 軸 axis
每個(gè)flex子元素沿著主軸(main axis)依次相互排列。交叉軸(cross axis)垂直于主軸。
- 屬性flex-direction定義主軸方向 - 屬性justify-content定義flex子元素如何沿著主軸排列 - 屬性align-items定義flex子元素如何沿著交叉軸排列 - 屬性align-self覆蓋父元素的align-items屬性,定義了多帶帶的flex子元素如何沿著交 叉軸排列方向 direction
flex容器的主軸起點(diǎn)邊緣(main start)、主軸終點(diǎn)邊緣(main end)和 交叉軸起點(diǎn)邊緣(cross start),交叉軸終點(diǎn)邊緣(cross end)為flex子元素排列的起始和結(jié)束位置。它們具體取決于由writing-mode(從左到右、從右到左等等)屬性建立的向量中的主軸和交叉軸位置。
- 屬性order將元素依次分組,并決定誰(shuí)先出現(xiàn)。 - 屬性flex-flow是屬性 flex-direction 和 flex-wrap 的簡(jiǎn)寫,用于排列flex子元素。行
flex子元素根據(jù) flex-wrap 屬性控制的側(cè)軸方向(在這個(gè)方向上可以建立垂直的新線),既可以是一行也可以是多行排列
尺寸flex子元素寬高可相應(yīng)地等價(jià)于主尺寸(main size)和交叉尺寸(cross size),它們都分別取決于flex容器的主軸和側(cè)軸。
- min-height和 min-width屬性的初始值為新增關(guān)鍵字 auto。 - 屬性flex是flex-basis,flex-grow和flex-shrink的縮寫,代表flex子元素的伸縮性。鳴謝
Flexbox布局(CSS3 彈性布局,F(xiàn)lexible Box)之 基本概念解析
后話夜深了,早點(diǎn)休息?!ㄆ鋵?shí)是致自己。)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/115398.html
摘要:前言嗯,前不久寫了一篇我所知道的布局上篇,于是今天來(lái)把下篇補(bǔ)上。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。負(fù)值對(duì)該屬性無(wú)效。默認(rèn)值為,表示繼承父元素的屬性,如果沒有父元素,則等同于。傳送門我所知道的布局上篇布局教程語(yǔ)法篇 前言 嗯,前不久寫了一篇我所知道的flex布局-上篇,于是今天來(lái)把下篇補(bǔ)上。 容器的屬性 既然標(biāo)題括號(hào)括住了語(yǔ)法,那么就直入正題直接來(lái)說(shuō)語(yǔ)法了。 首先設(shè)為Flex...
摘要:原文從零到一,擼一個(gè)在線斗地主上篇作者背景朋友來(lái)深圳玩,若說(shuō)到在深圳有什么好玩的,那當(dāng)然是宅在家里斗地主了可是天算不如人算,撲克牌丟了幾張不全大熱天的,誰(shuí)愿意出去買牌啊。 原文:從零到一,擼一個(gè)在線斗地主(上篇) | AlloyTeam作者:TAT.vorshen 背景:朋友來(lái)深圳玩,若說(shuō)到在深圳有什么好玩的,那當(dāng)然是宅在家里斗地主了!可是天算不如人算,撲克牌丟了幾張不全……大熱天的,...
摘要:前言春節(jié)假期有幸拜讀了張?chǎng)涡翊蟠蟮年P(guān)于與的兩篇文章見參考文獻(xiàn),很有收獲自己在開發(fā)的過(guò)程中,很多時(shí)候都會(huì)采用布局,而與這種方式已經(jīng)很少使用了這次在春假期間學(xué)習(xí)了,深感的好用與便利。相對(duì)于,它多出來(lái)一個(gè)的屬性,代表拉伸默認(rèn)屬性。 前言 春節(jié)假期有幸拜讀了張?chǎng)涡翊蟠蟮年P(guān)于Flex與Grid的兩篇文章(見參考文獻(xiàn)),很有收獲;自己在開發(fā)的過(guò)程中,很多時(shí)候都會(huì)采用Flex布局,而Float與in...
摘要:語(yǔ)法如下是簡(jiǎn)寫屬性,也可以分別定義行間隔和列間隔。語(yǔ)法如下屬性值得含義同這里不再過(guò)多說(shuō)明,讀者可以自行驗(yàn)證。 前言 在上篇——JavaScript五十問(wèn)——對(duì)比來(lái)說(shuō)CSS的Grid與FlexBox(上篇),我介紹了Flex的屬性與使用,今天我們來(lái)總結(jié)一下Grid的具體使用方法,最后會(huì)結(jié)合Flex與Grid布局講一講二者的聯(lián)系與不同。 需要注意得是,Grid布局與我們之前所熟悉的css布...
閱讀 1245·2021-09-03 10:44
閱讀 638·2019-08-30 13:13
閱讀 2829·2019-08-30 13:11
閱讀 1995·2019-08-30 12:59
閱讀 1067·2019-08-29 15:32
閱讀 1627·2019-08-29 15:25
閱讀 1030·2019-08-29 12:24
閱讀 1321·2019-08-27 10:58