CSS3與彈性盒布局

來源:互聯網
上載者:User

標籤:標準   htm   佔用   情況   小結   col   wrap   splay   display   

1、彈性盒布局對齊模式1.1、彈性盒子

在規定彈性盒子之中的子級元素換行顯示之前父級元素必須是彈性盒子模型,也就是設定 display 為 flex 

代碼如下:

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title>彈性盒布局</title>        <style type="text/css">            .div1{                width: 800px;                height: 410px;                display: flex;/*設定為彈性盒模型*/                border: 1px solid red;                margin: 0 auto;            }            .div1 a{                text-decoration: none;                display: inline-block;                flex: auto;   /*子項目平均分配父級元素寬度與高度*/                margin: 5px;                background-color: #757575;            }        </style>    </head>    <body>        <div class="div1">            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>        </div>    </body></html>

結果:

1.2、彈性盒子換行顯示flex-wrap:wrap ;    彈性容器為多行。該情況下彈性子項溢出的部分會被放置到新行,子項內部會發生斷行。
<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title>彈性盒布局</title>        <style type="text/css">            .div1{                width: 800px;                height: 410px;                display: flex;/*設定為彈性盒模型*/                flex-wrap: wrap; /*規定彈性盒子的內容換行顯示*/                border: 1px solid red;                margin: 0 auto;            }            .div1 a{                text-decoration: none;                display: inline-block;                width: 150px;                height: 200px;                border: 1px solid red;                background-color: #757575;            }        </style>    </head>    <body>        <div class="div1">            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>        </div>    </body></html>

結果:

從上面的結果來看雖然子項目換行顯示了但是布局效果並不是很好,好的別著急我們接著往下看

1.3、彈性盒子左右對齊CSS 文法:justify-content: flex-start|flex-end|center|space-between|space-around|initial|inherit;

屬性值:
flex-start預設值。項目位於容器的開頭。
flex-end項目位於容器的結尾。
center 項目位於容器的中心。
space-between項目位於各行之間留有空白的容器內。
space-around項目位於各行之前、之間、之後都留有空白的容器內。
initial 設定該屬性為它的預設值。
inherit 從父元素繼承該屬性。

justify-content 的屬性值有很多,本次為大家介紹的是 space-between 也是在我們布局中比較好用的一中布局方式,缺點就是相容性不是很理想

 

廢話就不多說了,給大家試試效果

 

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title>彈性盒布局</title>        <style type="text/css">            .div1{                width: 800px;                height: 410px;                display: flex;/*設定為彈性盒模型*/                flex-wrap: wrap; /*規定彈性盒子的內容換行顯示*/                justify-content: space-between; /*規定彈性盒子左右對齊*/                border: 1px solid red;                margin: 0 auto;            }            .div1 a{                text-decoration: none;                display: inline-block;                width: 150px;                height: 200px;                background-color: #757575;            }        </style>    </head>    <body>        <div class="div1">            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>        </div>    </body></html>

結果:

雖然效果已經很不錯了,但是細心的童鞋不難發現我們的子項目並沒有與父元素的底部平齊

1.4、彈性盒子交叉軸對齊

CSS 文法 align-content: stretch|center|flex-start|flex-end|space-between|space-around|initial|inherit;

stretch  預設值。元素被展開以適應容器。各行將會伸展以佔用剩餘的空間。如果剩餘的空間是負數,該值等效於‘flex-start‘。在其它情況下 ,剩餘空間被所有行平分,以擴大它們的側軸尺寸。

center 元素位於容器的中心。各行向彈性盒容器的中間位置堆疊。各行兩兩緊靠住同時在彈性盒容器中置中對齊,保持彈性盒容器的側軸起始內 容邊界和第一行之間的距離與該容器的側軸結束內容邊界與第最後一行之間的距離相等。(如果剩下的空間是負數,則各行會向兩個方向 溢出的相等距離。)

flex-start 元素位於容器的開頭。各行向彈性盒容器的起始位置堆疊。彈性盒容器中第一行的側軸起始邊界緊靠住該彈性盒容器的側軸起始邊界,之 後的每一行都緊靠住前面一行。

flex-end 元素位於容器的結尾。各行向彈性盒容器的結束位置堆疊。彈性盒容器中最後一行的側軸起結束界緊靠住該彈性盒容器的側軸結束邊界, 之後的每一行都緊靠住前面一行。

space-between 元素位於各行之間留有空白的容器內。各行在彈性盒容器中平均分布。如果剩餘的空間是負數或彈性盒容器中只有一行,該值等效 於‘flex-start‘。在其它情況下,第一行的側軸起始邊界緊靠住彈性盒容器的側軸起始內容邊界,最後一行的側軸結束邊界緊靠住彈 性盒容器的側軸結束內容邊界,剩餘的行則按一定方式在彈性盒視窗中排列,以保持兩兩之間的空間相等。

space-around 元素位於各行之前、之間、之後都留有空白的容器內。各行在彈性盒容器中平均分布,兩端保留子項目與子項目之間間距大小的一半。 如果剩餘的空間是負數或彈性盒容器中只有一行,該值等效於‘center‘。在其它情況下,各行會按一定方式在彈性盒容器中排列,以 保持兩兩之間的空間相等,同時第一行前面及最後一行後面的空間是其他空間的一半。

屬性值有很多,本次介紹一下 space-between 

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title>彈性盒布局</title>        <style type="text/css">            .div1{                width: 800px;                height: 410px;                display: flex;/*設定為彈性盒模型*/                flex-wrap: wrap; /*規定彈性盒子的內容換行顯示*/                justify-content: space-between; /*規定彈性盒子左右對齊*/                align-content: space-between; /*當彈性盒內容為多行顯示是 規定交叉軸對齊*/                border: 1px solid red;                margin: 0 auto;            }            .div1 a{                text-decoration: none;                display: inline-block;                width: 150px;                height: 200px;                background-color: #757575;            }        </style>    </head>    <body>        <div class="div1">            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>            <a href="##"></a>        </div>    </body></html>

結果:

非常快速的就完成了一個非常完美的布局了,是不是呢。

小結:這樣的布局方式不會脫離標準文檔流,所以就不會有需要清除浮動的問題

CSS3與彈性盒布局

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.