
批改狀態(tài):合格
老師批語(yǔ):flex已經(jīng)應(yīng)用了十幾年了,已成為標(biāo)準(zhǔn),不需要再加瀏覽器前綴了,除非用戶(hù)使用了非常古老的瀏覽器
任何一個(gè)元素(塊元素、行內(nèi)塊元素、行內(nèi)元素),都可以設(shè)置為彈性盒子屬性。
語(yǔ)法:塊元素: display:flex; 行內(nèi)元素:display:inline-flex;
注意:webkit 內(nèi)核的瀏覽器,須要加上 -webkit 前綴;
須要注意的是:設(shè)置為flex 布局后,子元素 的 clear(清除浮動(dòng))、float(浮動(dòng))和vertical-align(垂直對(duì)齊方式)屬性將失效;
flex布局的基本概念:
設(shè)置為flex布局的元素,稱(chēng)為flex容器,它的所有子元素就是容器成員,被稱(chēng)為項(xiàng)目。
水平主軸(main axis)和垂直交叉軸(cross axis)。
主軸的開(kāi)始位置叫做 main start(與容器邊框的交叉點(diǎn)),結(jié)束位置叫做 main end;
交叉軸的開(kāi)始位置叫做cross start,結(jié)束位置叫做 cross end;
項(xiàng)目(容器成員)默認(rèn)沿著主軸排列,單個(gè)項(xiàng)目占據(jù)的主軸空間叫做main size,占據(jù)的交叉軸空間叫做cross size;
1、flex-direction 設(shè)置項(xiàng)目的排列方向;
值:
row (默認(rèn)值):主軸為水平方向,起點(diǎn)在左端;
row-reverse: 主軸為水平方向,起點(diǎn)在右端;
column:主軸為垂直方向,起點(diǎn)在上端。
column-reverse: 主軸為垂直方向,起點(diǎn)在下端。
2、flex-wrap 設(shè)置項(xiàng)目換行方式;
值:
nowrap(默認(rèn)值) :不換換;
wrap :換行,第一行在上方;
wrap-reverse: 換行,第一行在下方;
3、flex-flow(常用,設(shè)置主軸方向和換行方式)
flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡(jiǎn)寫(xiě)形式,默認(rèn)值為row nowrap
值;
row(默認(rèn)值):
row-reverse:
column:
column-reverse
nowrap | wrap | wrap-reverse
4、justify-content :(常用)定義項(xiàng)目在主軸上的對(duì)齊方式。
值:
flex-start(默認(rèn)值):左對(duì)齊
flex-end:右對(duì)齊
center: 居中
space-between:兩端對(duì)齊,項(xiàng)目之間的間隔都相等。
space-around:每個(gè)項(xiàng)目?jī)蓚?cè)的間隔相等。所以,項(xiàng)目之間的間 隔比項(xiàng)目與邊框的間隔大一倍。
5、align-items: 定義項(xiàng)目在交叉軸上的對(duì)齊方式;
值:
flex-start:交叉軸的起點(diǎn)對(duì)齊。
flex-end:交叉軸的終點(diǎn)對(duì)齊。
center:交叉軸的中點(diǎn)對(duì)齊。
baseline: 項(xiàng)目的第一行文字的基線(xiàn)對(duì)齊。
stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或設(shè)為auto,將占滿(mǎn)整個(gè)容器的高度。
6、align-content :定義項(xiàng)目在多行容器中的對(duì)齊方式;如果項(xiàng)目只有一行容器,該屬性不起作用。
值:
flex-start:與交叉軸的起點(diǎn)對(duì)齊。
flex-end:與交叉軸的終點(diǎn)對(duì)齊。
center:與交叉軸的中點(diǎn)對(duì)齊。
space-between:與交叉軸兩端對(duì)齊,軸線(xiàn)之間的間隔平均分布。
space-around:每根軸線(xiàn)兩側(cè)的間隔都相等。所以,軸線(xiàn)之間的間隔比軸線(xiàn)與邊框的間 隔大一倍。
stretch(默認(rèn)值):軸線(xiàn)占滿(mǎn)整個(gè)交叉軸。
1、order屬性;定義項(xiàng)目在主軸上的排列順序;
語(yǔ)法: *{order: 1}數(shù)字1是根據(jù)需求自己定義的值,填寫(xiě)整數(shù),*表示須要設(shè)置排序的項(xiàng)目;
2、flex屬性:定義項(xiàng)目的縮放比例與基準(zhǔn)款寬;
是 flex-grow/flex-shrink/flex-basis的簡(jiǎn)寫(xiě),默認(rèn)值為0 1 auto,后面2各屬性可選;
flex屬性有兩個(gè)快捷值: none和auto(none表示0 0 auto)(auto表示1 1 auto)
3、align-self: 定義單個(gè)項(xiàng)目在交叉軸上的對(duì)齊方式;可覆蓋align-items屬性。
默認(rèn)值為auto,表示繼承父元素的align-items屬性,如果沒(méi)有父元素,則等同于stretch。
4、flex-grow屬性
flex-grow屬性定義項(xiàng)目的放大比例,默認(rèn)為0,即如果存在剩余空間,也不放大。
flex-grow:1;默認(rèn)值為0;
5、flex-shrink屬性
flex-shrink:屬性定義項(xiàng)目的縮小比例,默認(rèn)為1,即如果空間不足,該項(xiàng)目將縮小。
6、flex-basis屬性
flex-basis屬性定義項(xiàng)目在分配多余空間之前,項(xiàng)目占據(jù)的主軸空間(main size)。瀏覽 器根據(jù)這個(gè)屬性,計(jì)算主軸是否有多余空間。它的默認(rèn)值為auto,即項(xiàng)目的本來(lái)大小。
語(yǔ)法:
.項(xiàng)目 {
flex-basis: <length> | auto; /* default auto */
}
它可以設(shè)為跟width或height屬性一樣的值(比如500px),則項(xiàng)目將占據(jù)固定空間。
<title>flex布局示例代碼</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.rongqi {
width: 480px;
height: 180px;
background-color: skyblue;
display: flex;
/* 設(shè)置項(xiàng)目排列方式 */
/* flex-direction
row(默認(rèn)值):主軸為水平方向,起點(diǎn)在左端。
row-reverse:主軸為水平方向,起點(diǎn)在右端。
column:主軸為垂直方向,起點(diǎn)在上沿。
column-reverse:主軸為垂直方向,起點(diǎn)在下沿。 */
/* flex-direction: row;
flex-direction:row-reverse;
flex-direction: column-reverse;
flex-direction: column; */
/* 設(shè)置項(xiàng)目換行方式 */
/* flex-wrap */
/* nowrap: 默認(rèn)值 不換行
wrap:換行,第一行上方(向下?lián)Q行)
wrap-reverse: 換行,第一行在下方(向上換行) */
/* flex-wrap:wrap;
flex-wrap: nowrap;
flex-wrap: wrap-reverse; */
/* 設(shè)置主軸方向與換行方式 */
/* flex-flow */
/* 垂直(起點(diǎn)在下方),換行 */
/* flex-flow:column wrap; */
/* 水平從左往右排,不換行 */
/* flex-flow: row nowrap; */
/* 垂直(起點(diǎn)在上方),不換行 */
/* flex-flow:column nowrap; */
/* 設(shè)置項(xiàng)目在主軸上的對(duì)齊方式 */
/* justify-content: */
/* 從左往右排并且對(duì)齊,默認(rèn)值 */
/* justify-content: flex-start; */
/* 從右往左排 并且對(duì)齊*/
/* justify-content: flex-end; */
/* 居中排列 */
/* justify-content: center; */
/* 兩端對(duì)齊,并且項(xiàng)目之間的間隔都相等 */
/* justify-content: space-between; */
/* 每個(gè)項(xiàng)目?jī)蓚?cè)的間隔相等,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍 */
/* justify-content: space-around; */
/* 設(shè)置項(xiàng)目在交叉軸上的對(duì)齊方式 */
/* align-items */
/* flex-start 從交叉軸的起點(diǎn)對(duì)齊 */
/* align-items: flex-start; */
/* flex-end 從交叉軸的終點(diǎn)對(duì)齊 */
/* align-items: flex-end; */
/* center 從交叉軸的中間點(diǎn)對(duì)齊 */
/* align-items: center; */
/* flex-start 從交叉軸的起點(diǎn)對(duì)齊 */
/* baseline 從項(xiàng)目的第一行文字基線(xiàn)對(duì)齊 */
/* align-items: baseline; */
/* 默認(rèn)值,如果項(xiàng)目沒(méi)有設(shè)置高度或者設(shè)置為auto時(shí),將占滿(mǎn)整個(gè)容器高度 */
/* align-items:stretch; */
/* 設(shè)置項(xiàng)目在多行容器中的對(duì)齊方式 */
/* align-content:; */
/* 與交叉軸的起點(diǎn)對(duì)齊 */
/* align-content: flex-start; */
/* 與交叉軸的終點(diǎn)對(duì)齊 */
/* align-content:flex-end; */
/* 與交叉軸的中間點(diǎn)對(duì)齊 */
/* align-content: center; */
/* 與交叉軸的兩端(上下/左右)對(duì)齊,軸線(xiàn)之間的間隔平均分布 */
/* flex-flow:column wrap; */
/* align-content:space-between; */
/* 每根軸線(xiàn)(水平)上下兩側(cè)的間隔相等,靠邊框的一側(cè)的間隔是軸線(xiàn)之間的間隔的一半 */
/* align-content: space-around; */
/* 占滿(mǎn)整個(gè)交叉軸,默認(rèn)值 */
/* align-content: stretch; */
/* 允許換行 */
/* flex-wrap: wrap; */
/* 設(shè)置主軸為水平方向 */
flex-flow: row wrap;
}
.rongqi .xiangmu {
width: 60px;
height: 60px;
background-color: red;
border: 1px solid violet;
}
/* 項(xiàng)目屬性 */
/* 項(xiàng)目屬性有:
order(排序、默認(rèn)為零,數(shù)字越小排名越靠前,可以為負(fù)數(shù))
flex-grow(定義項(xiàng)目的放大比例,默認(rèn)為0,即如果存在剩余空間也不放大)
flex-shrink(定義項(xiàng)目的縮小比例,默認(rèn)為1,即如果空間不足,該項(xiàng)目將自動(dòng)縮?。?/span>
flex-basis(定義項(xiàng)目在分配多余空間之前,項(xiàng)目占據(jù)的主軸空間(main size),瀏覽器根據(jù)這個(gè)屬性,計(jì)算主軸是否有多
余空間,它的默認(rèn)值為auto,即項(xiàng)目原本的大小。值可以設(shè)置根寬高一樣的值,這樣它的空間會(huì)被固定)
flex(這屬性最常用,flex是 flex-frow、flex-shrink、flex-basis的簡(jiǎn)寫(xiě)語(yǔ)法,默認(rèn)值為(0 1 auto),后面兩個(gè)屬性可選,
快捷值:[auto(1 1 auto)、none (0 0 auto)]語(yǔ)法:flex:flex-grow flex-shrink flex-basis;
align-self(設(shè)置單個(gè)項(xiàng)目的對(duì)齊方式(與其它項(xiàng)目的對(duì)齊方式不一樣,個(gè)性化定制對(duì)齊方式)可以覆蓋align-itmes屬性。默認(rèn)
值為 auto,即繼承父元素的align-itmes屬性,如果沒(méi)有父元素,則等同于stretch(占滿(mǎn)整個(gè)容器高度)) */
/* 排列順序 */
/* .rongqi .xiangmu:first-of-type {
order: 2;
}
.rongqi .xiangmu:nth-of-type(2) {
order: 3;
}
.rongqi .xiangmu:nth-of-type(5) {
order: -1;
} */
/* 放大比例,0為默認(rèn),有剩余也不放大;都為1 有剩余空間 等分;某個(gè)項(xiàng)目為2,其它為1,為2的項(xiàng)目不為1的項(xiàng)目多占1倍的空間 */
/* .rongqi .xiangmu:nth-of-type(1) {
flex-grow: 0;
flex-grow: 1;
}
.rongqi .xiangmu:nth-of-type(3) {
flex-grow: 0;
flex-grow: 1;
}
.rongqi .xiangmu:nth-of-type(2) {
flex-grow: 2;
flex-grow: 1;
} */
/* 定義項(xiàng)目縮小比例,默認(rèn)為1,即如果空間不足,該項(xiàng)目將縮小,通過(guò)設(shè)置值來(lái)控制項(xiàng)目是否縮小,多個(gè)項(xiàng)目可以分別設(shè)置,值越小優(yōu)先級(jí)越高(不縮?。?*/
/* .rongqi .xiangmu:first-of-type{
flex-shrink:0;
} */
/* 定義項(xiàng)目在分配多余空間之前,項(xiàng)目占據(jù)的主軸空間 */
/* .rongqi .xiangmu:first-of-type{
flex-basis: 200px;
}
*/
/* 語(yǔ)法:flex:flex-grow flex-shrink flex-basis; */
/* .rongqi .xiangmu:nth-of-type(9){
flex:auto;
flex:auto;
} */
/* 定義單個(gè)項(xiàng)目的對(duì)齊方式 align-self */
.rongqi .xiangmu:nth-of-type(9) {
align-self: flex-end;
align-self: flex-start;
align-self: center;
align-self: baseline;
align-self: stretch;
}
</style>
</head>
<body>
<div class="rongqi">
<div class="xiangmu">1</div>
<div class="xiangmu">2</div>
<div class="xiangmu">3</div>
<div class="xiangmu">4</div>
<div class="xiangmu">5</div>
<div class="xiangmu">6</div>
<div class="xiangmu">7</div>
<div class="xiangmu">8</div>
<div class="xiangmu">8</div>
<div class="xiangmu">7</div>
</div>
</body>
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)