CSS FLEX
看 Amos 大大的影片作筆記。
啟動 FLEX
- 在父層設定 display: flex;
FLEX 三大特性
- 延展比 flex-grow
- 收縮比 flex-shrink
- 基本比 flex-basis
父層設定
橫向直向切換
- 橫向
flex-direction: row;
- 直向
flex-direction: column;
資料流對齊
- justify-content (主軸對齊方式)
- align-items (交叉軸對齊方式:單行)
- align-content (交叉軸對齊方式:多行)
橫向 flex-direction: row; <—預設
//水平由左至右
justify-content: flex-start; (水平靠左)
justify-content: center; (水平置中)
justify-content: flex-end; (水平靠右)
justify-content: space-around; (水平分散對齊)
justify-content: space-between; (左右兩端貼齊)
//垂直由上至下
align-items: flex-start; (垂直靠上)
align-items: center; (垂直置中)
align-items: flex-end; (垂直靠下)
align-items: space-around; (垂直分散對齊)
align-items: space-between; (上下兩端貼齊)
align-items: stretch; (延展) <---預設
//space-around 將剩下的空間平均分到每個項目的左右兩邊
//space-between 將剩下的空間平均分到每項項目之間
flex 預設不會換行
- 若要換行需加上
flex-wrap: wrap;
範例1:橫向、多列、水平垂直置中
範例2:直向、單行、水平垂直置中、2號 align-self
子項目設定
範例3:橫向、單列、水平垂直置中、order
範例4:橫向、單列、水平垂直置中、flex-basis, flex-grow
- flex-basis 設為 0px,代表每個子項目寬為 0px,剩餘空間就是整個父層的空間,再利用 flex-grow 去分配剩餘空間,這就是 Bootstrap 4 的作法。
- 但這招用在單列 OK,多列會有問題。
範例5:橫向、單列、水平垂直置中、flex-shrink
- flex-shrink: 0 (不伸縮)
- flex-shrink: 1 (伸縮) <—預設
flex-shrink (收縮比)
- 總比值:各個子項目的寬度 * 收縮比,並加總之結果。
- 超出值:
- 扣除值:
(子項目的寬度 * 收縮比 / 總比值) * 超出值 = 扣除值
其他
- display: inline-block; 的時候如果要垂直置中,vertical-align: middle; //注意不是用 center
- 唯一用 middle 的只有 vertical-align