搜尋
首頁web前端css教學CSS Flexbox 深入探究

CSS Flexbox Deep Dive

第 8 講:掌握 CSS Flexbox - 深入探討

在本次講座中,我們將深入探討 CSS Flexbox,這是一個強大的佈局工具,可幫助您設計回應靈敏且靈活的佈局。您將學習如何使用 Flexbox 有效地對齊、分佈和排序元素,使您的設計在不同裝置上更具適應性。


什麼是 Flexbox?

Flexbox 是「Flexible Box Layout」的縮寫,是一個 CSS 佈局模組,可以更輕鬆地設計可適應不同螢幕尺寸的佈局。它允許容器中的項目靈活排列,根據可用空間動態對齊它們。


1. Flexbox 名詞

在開始使用 Flexbox 之前,我們先來了解一下它的主要元件:

  • Flex Container:儲存 Flex 專案的父元素。
  • Flex Items:Flex 容器內的子元素。

您可以透過在容器上設定 display: flex 來啟用 Flexbox。

  • 範例:
  .flex-container {
    display: flex;
  }

現在,.flex-container 內的子元素將按照 Flexbox 規則運作。


2.彎曲方向

flex-direction 控制彈性項目在容器中放置的方向。預設情況下,項目放置在一行中。

  • 價值觀

    • row:項目水平排列(預設)。
    • row-reverse:項目水平排列,但順序相反。
    • 列:項目垂直排列。
    • column-reverse:項目以相反的順序垂直排列。
  • 範例:

  .flex-container {
    display: flex;
    flex-direction: row; /* You can change to column */
  }

3.證明內容合理

justify-content 用於沿著主軸對齊 Flex 項目(如果 flex-direction: row 則水平對齊;如果 flex-direction: column 則垂直對齊)。

  • 價值觀

    • flex-start:將項目與開頭對齊。
    • flex-end:將項目對齊到最後。
    • center:將專案置中。
    • space- Between: 展開項目,第一個項目在開始,最後一個項目在結束。
    • space-around:在每個項目周圍增加相等的空間。
  • 範例:

  .flex-container {
    justify-content: center;
  }

在此範例中,Flex 容器內的項目將會居中。


4.對齊項目

align-items 沿著橫軸(垂直於主軸)對齊彈性項目。

  • 價值觀

    • 拉伸:拉伸項目以填充容器(預設)。
    • flex-start:將專案與橫軸的起點對齊。
    • flex-end:將項目與橫軸的末端對齊。
    • center:將專案沿橫軸居中。
  • 範例:

  .flex-container {
    align-items: center;
  }

5.彈性包裹

預設情況下,彈性項目放置在一行上,內容可能會縮小以適應。 flex-wrap 讓彈性項目在必要時換行到多行。

  • 價值觀

    • nowrap:項目保留在一行上(預設)。
    • 換行:項目換行到多行。
    • 反向換行:項目換行到多行,但順序相反。
  • 範例:

  .flex-container {
    flex-wrap: wrap;
  }

6.對齊內容

align-content 沿著橫軸對齊多行 Flex 專案。當容器在橫軸上有額外的空間,並且有多行彈性項目時使用。

  • 價值觀

    • flex-start:將行打包到開頭。
    • flex-end:將行打包到末尾。
    • center:將線排列到中心。
    • space- Between:均勻分佈線條,線條之間留有空間。
    • space-around:均勻分佈線條,周圍留有空間。
    • 拉伸:拉伸線條以佔據可用空間。
  • 範例:

  .flex-container {
    align-content: space-between;
  }

實際範例:建立響應式照片庫

讓我們使用 Flexbox 建立一個響應式照片庫。

HTML:

<div class="gallery">
  <div class="gallery-item">Image 1</div>
  <div class="gallery-item">Image 2</div>
  <div class="gallery-item">Image 3</div>
  <div class="gallery-item">Image 4</div>
  <div class="gallery-item">Image 5</div>
</div>

CSS:

body {
  margin: 0;
  font-family: Arial, sans-serif;
}

.gallery {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around;
  gap: 10px;
  padding: 20px;
}

.gallery-item {
  flex-basis: calc(25% - 20px); /* Four items per row */
  background-color: #ddd;
  padding: 20px;
  text-align: center;
}

@media screen and (max-width: 768px) {
  .gallery-item {
    flex-basis: calc(50% - 20px); /* Two items per row on smaller screens */
  }
}

在此範例中:

  • The .gallery container uses Flexbox to wrap the items and spread them evenly.
  • Each .gallery-item takes up 25% of the container width, minus the gap.
  • On smaller screens (below 768px), the items adjust to 50% width for better readability.

Responsive Design with Flexbox

Flexbox is a powerful tool for responsive design. You can easily adjust the layout by changing flex properties based on the screen size using media queries.

  • Example:
  @media screen and (max-width: 600px) {
    .gallery-item {
      flex-basis: 100%; /* Items take up full width on small screens */
    }
  }

With this media query, on screens smaller than 600px, each gallery item will take up the full width of the container.


Practice Exercises

  1. Create a navigation bar using Flexbox, with the logo on the left and the links on the right.
  2. Create a three-column layout that wraps into one column on smaller screens.
  3. Use justify-content and align-items to create different layouts, like a centered section or a footer with evenly spaced links.

Next Up: In the next lecture, we’ll explore CSS Grid - A Deep Dive, where you’ll learn about CSS Grid and how it compares to Flexbox for building complex layouts. Stay tuned!


follow me on LinkedIn-

Ridoy Hasan

以上是CSS Flexbox 深入探究的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐Mar 08, 2025 am 09:45 AM

這是我們在形式可訪問性上進行的小型系列中的第三篇文章。如果您錯過了第二篇文章,請查看“以:focus-visible的管理用戶焦點”。在

將框陰影添加到WordPress塊和元素將框陰影添加到WordPress塊和元素Mar 09, 2025 pm 12:53 PM

CSS盒子陰影和輪廓屬性獲得了主題。讓我們查看一些在真實主題中起作用的示例,以及我們必須將這些樣式應用於WordPress塊和元素的選項。

使用智能表單框架創建JavaScript聯繫表格使用智能表單框架創建JavaScript聯繫表格Mar 07, 2025 am 11:33 AM

本教程演示了使用智能表單框架創建外觀專業的JavaScript表單(注意:不再可用)。 儘管框架本身不可用,但原理和技術仍然與其他形式的建築商相關。

創建一個具有可滿足屬性的內聯文本編輯器創建一個具有可滿足屬性的內聯文本編輯器Mar 02, 2025 am 09:03 AM

構建內聯文本編輯器並不是微不足道的。 該過程首先要使目標元素可編輯,並在此過程中處理潛在的語法異常。 創建編輯器來構建此編輯器,您需要動態修改內容

使您的第一個自定義苗條過渡使您的第一個自定義苗條過渡Mar 15, 2025 am 11:08 AM

Svelte Transition API提供了一種使組件輸入或離開文檔(包括自定義Svelte Transitions)時動畫組件的方法。

使用GraphQL緩存使用GraphQL緩存Mar 19, 2025 am 09:36 AM

如果您最近開始使用GraphQL或審查了其優點和缺點,那麼您毫無疑問聽到了諸如“ GraphQl不支持緩存”或

比較5個最佳的PHP形式構建器(和3個免費腳本)比較5個最佳的PHP形式構建器(和3個免費腳本)Mar 04, 2025 am 10:22 AM

本文探討了Envato Market上可用的PHP表單構建器腳本,比較了其功能,靈活性和設計。 在研究特定選項之前,讓我們了解PHP形式構建器是什麼以及為什麼要使用一個。 PHP形式

在node.js中使用multer上傳並上傳express在node.js中使用multer上傳並上傳expressMar 02, 2025 am 09:15 AM

該教程通過使用node.js,express和multer構建文件上傳系統來指導您。 我們將介紹單個和多個文件上傳,甚至演示在MongoDB數據庫中存儲圖像以進行以後的檢索。 首先,設置您的projec

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),