成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

10分鐘理解CSS3 FlexBox

dongxiawu / 1127人閱讀

摘要:顧名思義,意味著增長,用于控制的尺寸的伸展。與相對(duì)的是,用于控制子元素尺寸超過后,對(duì)子元素的壓縮。壓縮后的的寬度分別為,所以相比于初始寬度被壓縮掉的寬度分別為,,與的值成反比。

基本介紹 特點(diǎn)

flexbox是一種css display類型,提供一種更簡單高效的布局方式;

flexbox可以對(duì)元素相對(duì)于父元素、兄弟元素進(jìn)行定位、控制尺寸、控制間距;

flexbox對(duì)響應(yīng)式有很好的支持;

工作原理

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

兼容性

Flex Container

先來看一個(gè)最簡單的flex示例,外層div設(shè)置display: flex成為一個(gè)flex container,內(nèi)部的3個(gè)div則自動(dòng)變?yōu)閒lex item:

html:

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; }

效果:

效果與浮動(dòng)布局類似,但是如果用浮動(dòng)實(shí)現(xiàn)的話需要寫更多的代碼,而flex一行就搞定了。

1. Justify Content

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

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

效果如圖:

除此之外justify-content還可以設(shè)置為flex-start, flex-end, space-around, space-between, space-even等值,具體效果請(qǐng)自行實(shí)驗(yàn)。

2. Align Items

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

css:

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

效果:

使用flex解決了以往css垂直居中實(shí)現(xiàn)復(fù)雜的問題!相應(yīng)的,align-items還有flex-start, flex-end等其他值。

3. Flex Direction

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

css:

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

效果:

4. Flex Wrap

如果我們不想在窗口變窄的情況下壓縮flex item,而是讓超出邊界的flex item換行顯示那我們可以設(shè)置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;
}

當(dāng)我們壓縮窗口的時(shí)候,效果如下:

flex wrap還有一個(gè)值:wrap-reverse,設(shè)置該值后,被wrap的元素會(huì)排到其他元素上面:

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

5. Flex Row

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

Flex Item 1. Flex Grow

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

將css修改為:

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

效果:

可以看到三個(gè)子元素平分了父元素的空間,因?yàn)榇藭r(shí)它們的flex-grow都是1。如果只有一個(gè)子元素設(shè)置了flex-grow呢?

css:

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

效果:

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

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

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相對(duì)的是flex-shrink, flex-shrink用于控制子元素尺寸超過flex container后,對(duì)子元素的壓縮。請(qǐng)看示例:

修改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; }

當(dāng)窗口正常尺寸時(shí),效果如下:

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

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

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

fs ∝ is/ss
3. Flex Basis

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

flex-basis只能用于flex-item,而width/height可以應(yīng)用于其他類型的元素;

flex-basis和flex-direction有關(guān),當(dāng)flex-direction為row的時(shí),flex-basis設(shè)置的是寬度,當(dāng)flex-direction為column時(shí),flex-basis設(shè)置的是高度;

當(dāng)flex item被絕對(duì)定位后(absolute position),flex-basis不起作用,而width/height可以;

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個(gè)flex item都在原來的初始寬度基礎(chǔ)上增加了相同的寬度:

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

4. Order

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

html:

1
2
3
4

css:

#blocks{
  display: flex;
  margin: 10px;
  justify-content: space-between;
}

#blocks div{
  flex: 0 0 100px;
  padding: 40px 0;
  text-align: center;
  background: #ccc;
}

默認(rèn)排列順序是按照flex item在html中的出現(xiàn)順序:

當(dāng)我們修改flex item的order值后,flex item會(huì)按照order值升序排列:

css:

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

效果:

結(jié)語

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/53431.html

相關(guān)文章

  • 前端-CSS3&H5

    摘要:高度模型淺識(shí)為的簡寫,簡稱為塊級(jí)格式化上下文,為瀏覽器渲染某一區(qū)域的機(jī)制,中只有和中還增加了和。并非所有的布局都會(huì)在開發(fā)中使用,但是其中也會(huì)涉及一些知識(shí)點(diǎn)。然而在不同的純制作各種圖形純制作各種圖形多圖預(yù)警 一勞永逸的搞定 flex 布局 尋根溯源話布局 一切都始于這樣一個(gè)問題:怎樣通過 CSS 簡單而優(yōu)雅的實(shí)現(xiàn)水平、垂直同時(shí)居中。記得剛開始學(xué)習(xí) CSS 的時(shí)候,看到 float 屬性不...

    xiaolinbang 評(píng)論0 收藏0
  • 10分鐘理解CSS3 Grid

    摘要:當(dāng)然使用要注意語法嚴(yán)謹(jǐn),像這種寫法是無法解析的,用名稱模擬出的結(jié)構(gòu)在二維空間上必須是一個(gè)整體,因?yàn)槊總€(gè)也是無法分割的。 基本介紹 上一篇文章我們介紹了 css3 flexbox,今天我們?cè)賮碚f說css3的另外一個(gè)強(qiáng)大的功能:Grid。Grid做前端的同學(xué)應(yīng)該都很熟悉了,翻譯成中文為柵格,用過bootstrap、semantic ui、ant design的同學(xué)肯定都了解grid lay...

    simon_chen 評(píng)論0 收藏0
  • CSS及布局

    摘要:經(jīng)過半年的打磨,正式發(fā)布,主要是新增了一些常用組件,并使用命名,為接下來的微信小程序開發(fā)做好準(zhǔn)備。這兩種方式實(shí)現(xiàn)的瀑布流式布局均支持首屏和網(wǎng)頁窗口大小改變時(shí)的列數(shù)自適應(yīng)。主要是對(duì)于標(biāo)準(zhǔn)里的布局方式草案中的布局方式進(jìn)行一些總結(jié)。 一勞永逸的搞定 flex 布局 尋根溯源話布局 一切都始于這樣一個(gè)問題:怎樣通過 CSS 簡單而優(yōu)雅的實(shí)現(xiàn)水平、垂直同時(shí)居中。記得剛開始學(xué)習(xí) CSS 的時(shí)候,看...

    jaysun 評(píng)論0 收藏0
  • 移動(dòng)端布局與適配

    摘要:實(shí)戰(zhàn)之微信錢包騰訊服務(wù)界面網(wǎng)格布局是讓開發(fā)人員設(shè)計(jì)一個(gè)網(wǎng)格并將內(nèi)容放在這些網(wǎng)格內(nèi)。對(duì)于移動(dòng)端適配,不同的公司不同的團(tuán)隊(duì)有不同的解決方案。柵格系統(tǒng)用于處理頁面多終端適配的問題。 grid實(shí)戰(zhàn)之微信錢包 騰訊服務(wù)界面 CSS3網(wǎng)格布局是讓開發(fā)人員設(shè)計(jì)一個(gè)網(wǎng)格并將內(nèi)容放在這些網(wǎng)格內(nèi)。而不是使用浮動(dòng)制作一個(gè)網(wǎng)格,實(shí)際上是你將一個(gè)元素聲明為一個(gè)網(wǎng)格容器,并把元素內(nèi)容置于網(wǎng)格中。 移動(dòng)端頁面適配—...

    Clect 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<