欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

CSS Flexbox的具體用法詳解

  發(fā)布時間:2017-12-15 15:58:18   作者:Ruheng   我要評論
這篇文章主要介紹了CSS Flexbox的具體用法詳解的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Flexbox是一個強大而靈活的布局,本篇文章主要對其進行學(xué)習(xí)了解。

一、Flexbox簡介

Flexbox布局(Flexible Box)模塊旨在提供一個更加有效的方式制定、調(diào)整和分布一個容器里的項目布局,即使他們的大小是未知或者是動態(tài)的。簡單的理解,就是可以自動調(diào)整,計算元素在容器空間中的大小,并進行有效合理的布局。

Flexbox布局中有兩個重要的概念:Flex容器和Flex項目。

Flex容器包含多個Flex項目,通過對Flex容器和Flex項目的具體屬性進行設(shè)置,可以達到各種各樣靈活的布局樣式。

Flexbox使用

Flexbox的使用非常簡單,只需要對Flex容器設(shè)置display:flex或者display:inline-flex,就可以具體操作使用Flexbox布局了。

下面以具體示例演示:

html代碼

<div class="container">
        <div class="wrap">
            <div></div>
            <div></div>
            <div></div>
        </div>
    </div>

css代碼

.container {
    width: 70%;
    height: 500px;
    margin:20px auto;
    border: 1px solid black;
}
.container .wrap {
    display: flex;
    border: 3px solid #a448cf;
    margin:20px;
    width:80%;
    height:80%  
}
.container .wrap div {
    width:150px;
    height:150px;
    background-color: #c75a5a;
    margin:10px;
}

 

二、Flex容器

首先介紹下Flex容器的具體屬性以及具體的使用方式。

屬性 含義
flex-direction row || column || row-reverse || column-reverse 控制Flex項目沿著主軸(Main Axis)的排列方向
flex-wrap wrap || nowrap || wrap-reverse 控制Flex項目是否換行顯示
flex-flow row wrap|| row nowrap || column wrap || column nowrap 等 flex-direction和flex-wrap兩個屬性的組合速記屬性
justify-content flex-start || flex-end || center || space-between || space-around 控制 Flex項目在Main-Axis上的對齊方式
align-items flex-start || flex-end || center || stretch || baseline 控制Flex項目在 Cross-Axis 對齊方式
align-content flex-start || flex-end || center || stretch 用于多行的Flex容器,控制Flex項目在 Cross-Axis 對齊方式

1. flex-direction

flex-direction屬性控制Flex項目沿著主軸(Main Axis)的排列方向,可以是行(水平)、列(垂直)或者行和列的反向。

默認(rèn)情況下flex-direction的屬性值是row,具體排列方式如下:

 

但是當(dāng)flex-direction的屬性值是column,對應(yīng)的主軸就應(yīng)該垂直向下。

具體應(yīng)用示例如下:

 

2. flex-wrap

flex-wrap屬性控制Flex項目是否換行。默認(rèn)情況下,F(xiàn)lex容器會在一行內(nèi)容納所有的Flex項目,因為flex-wrap屬性的默認(rèn)值是nowrap,也就是不換行。

具體應(yīng)用示例如下:

 

其中wrap-reverse表示Flex項目在容器中多行排列,只是方向是反的。

3. flex-flow

flex-flow是flex-direction和flex-wrap兩個屬性的速記屬性。

具體不再解釋,看下面示例即可:

4. justify-content

justify-content屬性,控制Flex項目在整個Main-Axis上的對齊方式。

justify-content的默認(rèn)屬性值是flex-start。

 

space-between讓flex項目兩端對齊。

space-around讓每個flex項目具有相同的空間

5. align-items

align-items控制Flex項目在Cross-Axis對齊方式。

align-items的默認(rèn)值是stretch,讓所有的Flex項目高度和Flex容器高度一樣,鋪展開。

 

baseline

讓所有flex項目在Cross-Axis上沿著他們自己的基線對齊。

其中stretch和baseline在不設(shè)置具體高度值,才會如上表現(xiàn),否則會顯示固定的高度。

align-content屬性與align-items作用相同,不過該屬性只針對多行,對單行無效。

三、Flex項目

接下來繼續(xù)介紹Flex項目的具體屬性及使用方法。

屬性 含義
order 數(shù)值 根據(jù) order 值重新排序。從底到高。
flex-grow 0 || positive number 控制Flex項目在容器有多余的空間如何放大
flex-shrink 0 || positive number 控制Flex項目在容器 沒有額外空間又如何縮小
flex-basis auto || % || em || rem || px 指定Flex項目的初始大小
align-self auto || flex-start || flex-end || center || baseline || stretch 控制單個Flex項目在 Cross-Axis 對齊方式

1. order

order允許Flex項目在一個Flex容器中重新排序,屬性默認(rèn)值是0。

依據(jù)order值的大小進行排序,按照值從低到高依次排序。

默認(rèn)情況下,排序如下:

 

當(dāng)將方塊1設(shè)置order:1后,排序如下:

 

如果,多個Flex項目具有相同的order值,F(xiàn)lex項目重新排序是基于HTML源文件的位置進行排序。

如下所示,將方塊1和方塊2都設(shè)置為order:1。

2. flex-grow 和 flex-shrink

flex-grow和flex-shrink屬性控制Flex項目在容器有多余的空間如何放大(擴展),在沒有額外空間又如何縮小。

flex-grow和flex-shrink 的值可以為 0或者大于0的任何正數(shù)。

默認(rèn)情況下,flex-grow屬性值設(shè)置為0,表示Flex項目不會增長,填充Flex容器可用空間。

默認(rèn)情況下,flex-shrink屬性值設(shè)置為1,表示Flex項目會縮小,適應(yīng)屏幕寬度。

如果把flex-grow的值設(shè)置為1,如下所示:

當(dāng)多個flex項目在一行內(nèi),即不換行時,設(shè)置不同的flex-grow和flex-shrink 值,對應(yīng)的空間分配也不同。 

flex-grow

將每一個item所設(shè)置的 grow 全部加起來,獲得可用空間,然后除以總的grow值,得到單位分配空間。

根據(jù)每一個item 設(shè)置的 grow 來算,如果一個item 的grow 為 6,那么 這個 item 在主軸上的尺寸就需要延伸 6*單位分配空間的大小。

flex-shrink

先將所有項目 按照 flex-shrink * item-size 的方式加起來 得到一個加權(quán)和,然后計算出 每一份 item 的 shrink比例: shrink比例 = flex-shrink * item-size / 之前的總和。最后每一個item 減去這個 shrink比例 * 負(fù)可用空間。

在flex項目有min-width(height)和max-width(height)時,對應(yīng)的項目要考慮上下限值,把剩余的伸縮值分配給其他項目。

3. flex-basis

flex-basis指定了 flex 元素在主軸方向上的初始大小,即決定了 flex項目內(nèi)容的寬或者高(取決于主軸的方向)的尺寸大小。

默認(rèn)情況,F(xiàn)lex項目的初始寬度由flex-basis的默認(rèn)值決定,即:flex-basis: auto。Flex項目寬度的計算是基于內(nèi)容的多少來自動計算。

flex-basis和width/height有一定的優(yōu)先級,具體規(guī)則如下:

  1. flex-basis 的優(yōu)先級比 width/height 非auto高
  2. width/height auto優(yōu)先級等于 flex-basis,取兩者中的最大值。

4. align-self

align-self 控制單個項目沿著Cross-Axis的對其方式。

 

除了auto之外,上述示例中flex容器設(shè)置了align-itmes:center。

auto 是將目標(biāo)flex項目的值設(shè)置為父元素的 align-items值,或者如果該元素沒有父元素的話,就設(shè)置為 stretch。上述示例中align-items:stretch。

四、總結(jié)

以上是對flexbox的整體介紹,可以看出其強大與靈活。除此之外,flexbox還有很多其他的特性以及問題,這里就不再介紹。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用CSS3的flexbox實現(xiàn)水平垂直居中與三列等高布局

    這篇文章給大家介紹了三個小節(jié)的內(nèi)容,其中包括關(guān)于css3中flexbox需要掌握的概念、flexbox實現(xiàn)水平垂直居中對齊和三列等高自適應(yīng)頁腳區(qū)域黏附底部的布局,有需要的可以參考
    2016-09-12
  • Flexbox制作CSS布局實現(xiàn)水平垂直居中的簡單實例

    下面小編就為大家?guī)硪黄狥lexbox制作CSS布局實現(xiàn)水平垂直居中的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-27
  • CSS3的Flexbox骰子布局的實現(xiàn)及問題講解

    骰子布局顧名思義,就是好比骰子的一面最多可以放置9個點,而每個面放置的點數(shù)正好就是一個布局的模型圖,這里我們就帶來CSS3的Flexbox骰子布局的實現(xiàn)及問題講解:
    2016-06-27
  • 基礎(chǔ)的CSS3彈性盒Flexbox布局使用實例

    這篇文章主要介紹了基礎(chǔ)的CSS3彈性盒Flexbox布局使用實例,文中最后也提到了解決兼容性問題的基本方法,需要的朋友可以參考下
    2016-04-08
  • CSS3的Flexbox布局的簡明入門指南

    這篇文章主要介紹了CSS3的Flexbox布局的簡明入門指南,Flexbox在"布局界"可謂風(fēng)光無限,近來Facebook開源的React Native也采用Flexbox來布局,需要的朋友可以參考下
    2016-04-08
  • css使用flexbox布局容器內(nèi)多元素水平居中

    這篇文章主要為大家詳細介紹了css使用flexbox布局容器內(nèi)多元素水平居中的方法,如何使用flexbox布局多元素水平居中?本文為大家進行解答,感興趣的小伙伴們可以參考一下
    2016-03-17
  • CSS中使用Flexbox來達到居中效果的實例

    這篇文章主要介紹了CSS中Flexbox來達到居中效果的實例,注意一下IE瀏覽器中的兼容問題,需要的朋友可以參考下
    2015-07-15
  • css3彈性盒模型(Flexbox)詳細介紹

    今天剛學(xué)了css3的彈性盒模型,這是一個可以讓你告別浮動、完美實現(xiàn)垂直水平居中的新特性。本文主要是總結(jié)一下今天所學(xué),有需要的朋友可以參考下
    2014-10-08
  • CSS3 Flexbox中flex-shrink屬性的用法示例介紹

    當(dāng)flex items的大小超過了flex container時, 各個flex item的壓縮比例,下面有個不錯的教程,大家可以參考下
    2013-12-30

最新評論