亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

10分鐘理解CSS3 FlexBox彈性布局

2024-07-11 08:59:44
字體:
來源:轉載
供稿:網友

基本介紹

特點

  • flexbox是一種css display類型,提供一種更簡單高效的布局方式;
  • flexbox可以對元素相對于父元素、兄弟元素進行定位、控制尺寸、控制間距;
  • flexbox對響應式有很好的支持;

工作原理

設置父元素的display屬性為flex,則子元素都變成flex item,由此可以控制子元素的排列方式、尺寸、間距等;

兼容性

Flex Container

先來看一個最簡單的flex示例,外層div設置display: flex成為一個flex container,內部的3個div則自動變為flex item:

html:

<div class="flex-container">  <div class="box one"></div>  <div class="box two"></div>  <div class="box three"></div></div>

css:

.flex-container{ max-width: 960px; margin: 0 auto; display:flex; }.box{ height: 100px; min-width: 100px; }.one{ background: pink; }.two{ background: lightgreen; }.three{ background: skyblue; }

效果:

效果與浮動布局類似,但是如果用浮動實現的話需要寫更多的代碼,而flex一行就搞定了。

1. Justify Content

如果我們想讓flex item居中排列呢,我們可以給flex container增加一個css屬性:justify-content,它控制flex item在主軸方向(main axis,由flex-drection決定,默認為水平方向)上的對齊方式:

.flex-container{  ...  justify-content: center;}

效果如圖:

除此之外justify-content還可以設置為flex-start, flex-end, space-around, space-between, space-even等值,具體效果請自行實驗。

2. Align Items

實現了flex方向的居中后,垂直于主軸方向(cross axis)的居中可以用align-items實現。

css:

.flex-container{  max-width: 960px;  margin: 0 auto;  display:flex;  justify-content: center;  height: 200px;  background-color: white;  align-items: center;}

效果:

使用flex解決了以往css垂直居中實現復雜的問題!相應的,align-items還有flex-start, flex-end等其他值。

3. Flex Direction

flex-direction決定了主軸方向即flex item排列方向,除了默認的row方向之外,還可以縱向、反向(row-reverse/column-reverse)排列flex item:

css:

.flex-container{  ...    flex-direction: column;  align-items: center;}

效果:

4. Flex Wrap

如果我們不想在窗口變窄的情況下壓縮flex item,而是讓超出邊界的flex item換行顯示那我們可以設置flex container的flex-wrap

.flex-container{  max-width: 960px;  margin: 0 auto;  display:flex;  flex-wrap: wrap;}.box{  height: 100px;  min-width: 300px;  flex-grow: 1;}

當我們壓縮窗口的時候,效果如下:

flex wrap還有一個值:wrap-reverse,設置該值后,被wrap的元素會排到其他元素上面:

由此可見,flex wrap一定程度上可以取代media query了。

5. Flex Row

最后,flex-directionflex-wrap可以合并為一個屬性flex-flow,比如:flex-flow: row-reverse wrap。

Flex Item

1. Flex Grow

在上面所有的例子中,三個flex item只占據了flex container小部分空間,如果想讓flex item占滿flex container我們需要給flex item設置flex-grow屬性。顧名思義,grow意味著增長,用于控制flex item的尺寸的伸展。

將css修改為:

.box {     height: 100px;     min-width: 100px;     flex-grow:1; }

效果:

可以看到三個子元素平分了父元素的空間,因為此時它們的flex-grow都是1。如果只有一個子元素設置了flex-grow呢?

css:

.box{ height: 100px; min-width: 100px; }.one{ background: pink; flex-grow: 1; }

效果:

此時two和three的大小不變,而one占據了父元素剩余空間。

如果將one的flex-grow改為2,而two和three改為1,我們看看會發生什么:

css:

.box{ height: 100px; min-width: 100px; flex-grow:1; }.one{ background: pink; flex-grow: 2; }

效果:

可以看到one的寬度變成了two和three的兩倍,因此flex item的尺寸和flex-grow的值成正比。

2. Flex Shrink

flex-grow相對的是flex-shrink, flex-shrink用于控制子元素尺寸超過flex container后,對子元素的壓縮。請看示例:

修改box的寬度為flex container的1/3,one、two、three的flex-shrink分別為1,2,3:

.box{ height: 100px; width: 320px; }.one{ background: pink; flex-shrink: 1; }.two{ background: lightgreen; flex-shrink: 2; }.three{ background: skyblue; flex-shrink: 3; }

當窗口正常尺寸時,效果如下:

當我們壓縮窗口使其變得更窄后,效果如下:

當flex container寬度變為540px后,子元素都被不同程度的壓縮了。壓縮后的one、two、three的寬度分別為250px、180px、110px,所以相比于初始寬度320px被壓縮掉的寬度分別為70px、140px、210px,70 : 140 : 210 = 1 : 2 : 3,與flex shrink的值成反比。實際上壓縮率和flex item的初始尺寸也有關系,只不過當初始尺寸一樣時它帶來的影響被忽略了。

假設flex shrink為fs,flex item的初始尺寸為is,flex item被壓縮的尺寸為ss,則正確的表達式為:

fs ∝ is/ss

3. Flex Basis

flex-basis用于設置flex item的初始寬/高。為什么有width和height還需要重新加一個flex-basis呢?flex-basis和width/height有如下的區別:

  1. flex-basis只能用于flex-item,而width/height可以應用于其他類型的元素;
  2. flex-basis和flex-direction有關,當flex-direction為row的時,flex-basis設置的是寬度,當flex-direction為column時,flex-basis設置的是高度;
  3. 當flex item被絕對定位后(absolute position),flex-basis不起作用,而width/height可以;
  4. flex-basis可以用于flex的簡寫形式,如:flex: 1 0 200px;

我們來看一下flex-basis的作用,將css修改如下:

.box{  height: 100px;  flex-grow: 1;}.one{  background: pink;  flex-basis: 100px;}.two{  background: lightgreen;  flex-basis: 200px;}.three{  background: skyblue;  flex-basis: 300px;}

3個flex item都在原來的初始寬度基礎上增加了相同的寬度:

當然,這個例子如果換成使用width也是一樣的效果,但是雖然效果一樣但意義不一樣,所以使用flex布局時還是應該盡量遵守規范,選合適的人去干正確的事。

4. Order

通過order屬性我們可以改變flex item的排列順序,例如:

html:

<section id="blocks">  <div class="one">1</div>  <div class="two">2</div>  <div class="three">3</div>  <div class="four">4</div></section>

css:

#blocks{  display: flex;  margin: 10px;  justify-content: space-between;}#blocks div{  flex: 0 0 100px;  padding: 40px 0;  text-align: center;  background: #ccc;}

默認排列順序是按照flex item在html中的出現順序:

當我們修改flex item的order值后,flex item會按照order值升序排列:

css:

.one{ order: 4; }.two{ order: 3; }.three{ order: 2; }.four{ order: 1; }

效果:

結語

flex就先簡單介紹到這里,flex很強大也很簡單,希望大家用的開心。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲激情在线视频| 美日韩精品视频免费看| 91亚洲精品视频| 久久亚洲一区二区三区四区五区高| 国产欧美日韩中文字幕| 成人午夜在线视频一区| 欧美精品videosex性欧美| 性色av一区二区三区| 96精品久久久久中文字幕| 欧美性xxxx极品hd满灌| 91在线观看欧美日韩| 久久精品视频在线| 日韩激情视频在线| 91精品视频观看| 亚洲人成网站在线播| 91欧美精品午夜性色福利在线| 这里只有精品视频在线| 色悠久久久久综合先锋影音下载| 亚洲一区二区在线播放| 久久久午夜视频| 国产精品人成电影| 自拍偷拍亚洲在线| 国产精品综合不卡av| 欧美一级成年大片在线观看| 国产精品99蜜臀久久不卡二区| 欧美日韩国产二区| 91久久久久久久久久| 欧美最猛性xxxx| 精品久久久久久久中文字幕| 最好看的2019年中文视频| 欧美做受高潮1| 91中文字幕在线观看| 国产精品丝袜白浆摸在线| 日韩在线免费视频观看| 日本欧美国产在线| 国产精品久久久久久影视| 97久久国产精品| 亚洲自拍小视频免费观看| 在线播放精品一区二区三区| 亚洲人成网站在线播| 国产97在线|日韩| 97视频在线观看免费高清完整版在线观看| 欧美亚洲另类制服自拍| 不用播放器成人网| 精品国产欧美成人夜夜嗨| 精品一区精品二区| xxxx性欧美| 国产精品自产拍高潮在线观看| 亚洲理论在线a中文字幕| www.亚洲男人天堂| 国外成人在线视频| 91性高湖久久久久久久久_久久99| 久久久久久国产| 成人久久精品视频| 国产精品久久久久久久久借妻| 97精品视频在线观看| 九九热视频这里只有精品| 97欧美精品一区二区三区| 日韩成人激情在线| 在线视频欧美日韩精品| 日韩av在线一区二区| 中日韩美女免费视频网站在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲第一国产精品| 日韩欧美国产成人| 日韩女优人人人人射在线视频| 日韩美女视频在线观看| 高清在线视频日韩欧美| 亚洲国产欧美日韩精品| 夜夜躁日日躁狠狠久久88av| 亚洲欧美国产精品专区久久| 国模私拍视频一区| 欧美另类交人妖| 欧美日韩国产va另类| 欧美成人久久久| 国产精品黄页免费高清在线观看| 成人性生交大片免费观看嘿嘿视频| 懂色av一区二区三区| 欧美日韩一区二区免费在线观看| 青草青草久热精品视频在线网站| 亚洲a级在线播放观看| 少妇高潮久久77777| 国产伦精品一区二区三区精品视频| 在线观看国产成人av片| 亚洲一品av免费观看| 欧美成人在线影院| 日本一区二区三区在线播放| 91亚洲精品久久久久久久久久久久| 国产视频丨精品|在线观看| 91精品久久久久久| 欧美激情videoshd| 国产精品视频男人的天堂| 成人情趣片在线观看免费| 中文字幕视频在线免费欧美日韩综合在线看| 久久九九精品99国产精品| 亚洲欧美资源在线| 日韩av黄色在线观看| 国产精品福利片| 精品成人国产在线观看男人呻吟| 精品国产电影一区| 亚洲乱码av中文一区二区| 18性欧美xxxⅹ性满足| 中文字幕亚洲一区| 蜜月aⅴ免费一区二区三区| 国产精品扒开腿做爽爽爽男男| 亚洲аv电影天堂网| 欧美日韩中文在线观看| 最近2019中文字幕mv免费看| 亚洲美女在线视频| 成人午夜在线观看| 日韩美女福利视频| 久久天天躁夜夜躁狠狠躁2022| 亚洲色图欧美制服丝袜另类第一页| 91精品国产91久久久久福利| 久久躁日日躁aaaaxxxx| 欧美一级视频一区二区| 欧美黄色三级网站| 91超碰中文字幕久久精品| 中文字幕av一区中文字幕天堂| 欧美极品美女电影一区| 一区二区在线视频| 热99久久精品| 久久夜色精品国产| 国产视频久久久久| 欧美视频国产精品| 久久99久国产精品黄毛片入口| 欧美激情视频网| 久久av.com| 福利一区视频在线观看| 91美女高潮出水| 亚洲精品成人网| 国产成人精品一区| 欧美一级电影免费在线观看| 日韩av影院在线观看| 国产噜噜噜噜噜久久久久久久久| 久久久噜噜噜久久| 伊人久久大香线蕉av一区二区| 国产一级揄自揄精品视频| 亚洲国产精品久久久久秋霞蜜臀| 日韩有码在线播放| 欧洲午夜精品久久久| 国产在线观看一区二区三区| 欧美激情亚洲自拍| 国自在线精品视频| 欧美激情女人20p| 国产精品草莓在线免费观看| 欧美高清第一页| 成人性生交大片免费看小说| 精品国偷自产在线视频99| 欧美二区乱c黑人| 97人人做人人爱| 亚洲人免费视频| 色综合天天综合网国产成人网| 亚洲第一福利视频| 疯狂做受xxxx高潮欧美日本| 亚洲精品永久免费精品| 欧美在线免费视频| 在线观看精品自拍私拍| 日韩成人在线电影网| 亚洲人成电影网站色xx| 日本精品久久电影| 国产精品福利片| 日本一区二区三区四区视频| 欧美性猛交xxx|