簡單描述我對彈性盒子的理解及使用方法
- 2022 年 7 月 20 日
- 筆記
一 .
1 什麼叫彈性盒子?
2 彈性盒子的特點,優劣勢?
3 怎麼去使用彈性盒子?
4 flex彈性盒子的注意事項有哪些?
/*************************************************解答**********************************************/
1. 彈性盒子也叫 Flexbox,是一種flex的布局效果,一般作用於手機端,在沒有誕生flex之前一般都是用流式布局丶浮動布局丶定位布局等等…來「創造」頁面,它最大的特點是有很大的布局分配能力。
2.先說他的
優點:flex布局有很多自定義屬性來完成分配空間的效果,並不需要計算,可以合理的分配空間,基本上新版的瀏覽器都能兼容。
缺點:假如元素在頁面是多行多列時,布局效果會很不盡人如意,一般情況下還是多用於移動端開發,解決不了檢查效果與分配空間。
3. 彈性盒子的使用:在網頁中我們把父級元素成為「容器」,它下面的第一層子元素成為「項目」,簡單來說就是爸爸稱為容器,他的子女稱為項目,孫子或者再往後都不能再這麼稱呼了。如果想使用單行盒子就給需要使用的空間元素添加(給父級添加) display:flex; 這時,此元素就成了flex的容器盒子,整個容器就能使用flex的相關屬性了。
4. flex的注意事項:① 子元素是依賴容器的元素,想要控制子元素的排序,依靠的是父級元素。 ② 設置父元素為彈性盒子,子元素的float將失效。 ③ 切記不要把flex與浮動布局或定位布局一起使用。 ④ 父級添加使用display:flex;子元素會塊狀化
二.
1. 主軸的排列方向?
2. 主軸的排序?
3. 項目的換行?
4. 主軸上的對齊方式?
5. 交叉軸的對齊方式?
6. 多行交叉軸的對其方式?
/*************************************************解答**********************************************/
1.主軸的排列方向:主軸分行模式 與 列模式兩種,也就是水平與垂直,同時也就有了正反兩個方向。
2. 主軸的排序:默認的是行模式 既 從左到右,分為以下幾種:
flex-direction:row; 默認值 行模式 正向排序
flex-direction:row-reverse; 默認值 行模式 反向排序
flex-direction:column; 默認值 列模式 正向排序
flex-direction:column-reverse; 默認值 列模式 反向排序
3. 項目的換行:默認是強制不換行。
flex-wrap:nowrap; 強制不換行
flex-wrap:wrap; 強制換行
4. 主軸上的對齊方式:
justify-content:定義項目在主軸上的對齊方式,注意需要區別行模式和列模式,在渲染之前,會先找到項目的排列方式在做渲染
justify-content: flex-start; 主軸起點對齊
justify-content: flex-end; 主軸終點對齊
justify-content: flex-center; 主軸居中
分配彈性元素的方式:
justify-content: space-between;主軸兩端對齊,每行首個元素貼近容器起點,每行尾個元素貼近容器重點,其餘剩餘空間均分
justify-content: space-around; 均勻排列每個元素,每個元素周圍分配相同的空間,如果遇到相鄰元素,就成了兩臂間隔
justify-content:space-evenly;每個項目元素之間的距離相等,均分所有空間
5. 交叉軸的對齊方式:
align-items 指的是項目在交叉軸對齊方式,但是有前提,交叉軸方向上要有富裕的空間
height: 300px;
align-items: flex-start; /*交叉軸起點對齊*/
align-items: flex-end; /*交叉軸終點對齊*/
align-items: center; /*交叉軸居中對齊*/
6.多行交叉軸的對齊方式:
多行顯示前提:有換行,並且在交叉軸方向上有空餘空間
align-content: flex-start;/* 3. 交叉軸起點對齊 */
align-content: flex-end;/* 3.1 交叉軸終點對齊 */
align-content: center;/* 3. 交叉軸居中 */
align-content: space-between;/* 3. 交叉軸兩端對齊 */
align-content: space-around;/* 3. 交叉軸環繞對齊,首尾一臂距離,相鄰元素兩臂距離 */
align-content: space-evenly;/* 3.交叉軸上每行元素之間距離相等,所有剩餘空間距離相等 */