iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
自我挑戰組

前端基礎:HTML 和 CSS 的 30 天學習之旅系列 第 13

DAY13:CSS 佈局:彈性盒子(Flexbox)

  • 分享至 

  • xImage
  •  

Flexbox 是什麼?

  • Flexbox(Flexible Box Layout) 是一種新的 CSS 佈局模式,專門用來設計一維的佈局(行或列),可以更靈活地控制元素之間的對齊、排列和間距。
  • Flexbox 適合處理容器內部的元素間的佈局問題,尤其是在需要自動調整子元素大小、填滿容器時非常有用。

Flex 容器和項目

  • Flex 容器(Flex Container) 是應用 Flexbox 佈局的父元素。
    • 需要將 display: flex 應用到容器上,該容器內的所有直接子元素將成為 flex 項目(Flex Items)
  • Flex 容器和項目之間的主要特點:
    • Flex 容器會控制其內部元素如何排列和分佈。
    • Flex 項目可以根據容器的空間動態地改變其尺寸。

Flexbox 的主要屬性

Flex 容器屬性
  • display: flex:設置元素為 Flex 容器,啟用 Flexbox。
  • flex-direction:設置子元素排列方向:
    • row(默認):子元素橫向排列。
    • row-reverse:子元素反向橫向排列。
    • column:子元素縱向排列。
    • column-reverse:子元素反向縱向排列。
  • justify-content:控制子元素在主軸(flex-direction 設定的軸線)上的對齊方式:
    • flex-start:子元素靠主軸起點對齊。
    • flex-end:子元素靠主軸終點對齊。
    • center:子元素居中排列。
    • space-between:子元素平均分佈,第一個在起點,最後一個在終點。
    • space-around:子元素均勻分佈,且周圍留有相等的空間。
  • align-items:控制子元素在交叉軸上的對齊方式:
    • stretch(默認):子元素填滿交叉軸。
    • flex-start:子元素靠交叉軸起點對齊。
    • flex-end:子元素靠交叉軸終點對齊。
    • center:子元素在交叉軸上居中。
  • flex-wrap:控制當子元素超出容器寬度時是否換行:
    • nowrap(默認):不換行,所有子元素在一行中。
    • wrap:自動換行,子元素超過容器寬度時移到下一行。
Flex 項目屬性
  • flex-grow:控制子元素在容器中剩餘空間的增長比例,默認為 0(不增長)。
  • flex-shrink:控制子元素在空間不足時的縮小比例,默認為 1(允許縮小)。
  • flex-basis:設置子元素的基礎尺寸,默認為 auto
  • align-self:允許單個子元素覆蓋 align-items 的設置,可設為 auto, flex-start, flex-end, center, baseline, stretch

實作

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Flexbox Example</title>
  <link rel="stylesheet" href="style.css"> <!-- 引用外部 CSS -->
</head>
<body>
  <div class="container">
    <div class="box box1">1</div>
    <div class="box box2">2</div>
    <div class="box">3</div>
  </div>
</body>
</html>

CSS:

.container {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  height: 200px;
  border: 2px solid #000;
}

.box {
  width: 100px;
  height: 100px;
  background-color: lightblue;
  text-align: center;
  line-height: 100px;
}

.box1 {
  background-color: coral;
}

.box2 {
  background-color: lightgreen;
}

網頁呈下圖:
https://ithelp.ithome.com.tw/upload/images/20240927/20169395wh6hIdzQVf.png


上一篇
Day 12: CSS 佈局:浮動
下一篇
DAY14:CSS 佈局:網格系統(Grid)
系列文
前端基礎:HTML 和 CSS 的 30 天學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言