🔸flex

╱🚧 under construction -> flow/writing direction

CSSlayoutdisplay ⟩ flex

任何元素設定 display: flex 就會變成 flexbox (flex container),而其內部的子元素會變成 flex itemsFlexbox 是一種佈局模式,可以設定容器內元素的排版對齊空間分配等方式。

📁 index.html

<!-- flexbox -->
<div class="flexbox">
    <!--     flex items     -->
    <div class="item red">A</div>
    <div class="item green">B<br>B</div>
    <div class="item blue">C<br>C<br>C</div>
</div>

📁 styles.css

/* flexbox */
.flexbox {
    display: flex;			/* ⭐️ 設定為 Flex 容器   */
    flex-direction: row; 		/*    設定主軸:水平(預設) */
    justify-content: space-around; 	/*    設定主軸對齊:分散   */
    align-items: center; 		/*    設定副軸對齊:居中   */
}

/* flex items */
.item {
    /* ⭐️ flex: grow shrink basis (shortcut)  */
    /*    0 = 不, 1 = 可            */
    flex: 0 0 auto;         /* 不擴展、不壓縮、尺寸依內容或設定 */
    flex: 0 1 auto;         /* 不擴展、可壓縮、尺寸依內容或設定 */
    flex: 1 0 auto;         /* 可擴展、不壓縮、尺寸依內容或設定 */
    flex: 1 1 auto;         /* 可擴展、可壓縮、尺寸依內容或設定 */
    
    /* ⭐️ flex-basis */
    flex-basis: auto;    /* 由內容或 CSS 決定尺寸 */
}

/* 以下為 flex items 的不同設定方式 */

.item {
    flex-basis: auto; 
    width: 100px;        /* ⭐️ 結果:初始尺寸為 100px,即使內容大小不同❗️ */
}

.item {
    flex-basis: 150px;   /* 初始尺寸固定為 150px */
}

.item {
    flex-basis: content; /* ⭐️ 根據內容決定,不參考 width/height❗️ */
}

.item {
    /* ⭐️ 初始尺寸設為 0,子元素完全依賴 flex-grow 來分配剩餘空間 */
    flex-basis: 0;     /* 初始尺寸設為 0  */
    flex-grow: 1;      /* 平均分配剩餘空間 */
}

Last updated