使用 display: flex 實現動態布局:每行兩個 item,單數時最后一個占滿整行

在這里插入圖片描述

文章目錄

  • 使用 `display: flex` 實現動態布局:每行兩個 item,單數時最后一個占滿整行 🎯
    • 一、需求分析
    • 二、實現思路
    • 三、代碼實現
      • 1. HTML 結構
      • 2. CSS 樣式
      • 關鍵點解析:
    • 四、效果演示
      • HTML 示例:
      • 效果:
    • 五、完整代碼


使用 display: flex 實現動態布局:每行兩個 item,單數時最后一個占滿整行 🎯

這兩天看到一個面試題有感而發,面試題如下
在這里插入圖片描述

在前端開發中,靈活布局是一個常見的需求。今天我們來探討如何使用 display: flex 實現一個動態布局:每行顯示兩個 item,間隔為 20px,并且當 item 數量為單數時,最后一個 item 占滿整行。🧑?💻

本文將詳細介紹實現方法,并附上完整代碼,幫助你輕松掌握這一技巧!

效果展示:
> 這里是導文

一、需求分析

我們需要實現以下效果:

  1. 每行顯示兩個 item,且 item 之間的間隔為 20px
  2. item 數量為單數時,最后一個 item 占滿整行。
  3. item 的數量 n 是動態的,布局需要自動適應。

二、實現思路

為了實現上述需求,我們可以借助 display: flex 的強大功能:

  1. 彈性盒子布局:使用 flex 實現靈活的排列方式。
  2. 換行功能:通過 flex-wrap: wrap 實現自動換行。
  3. 動態寬度:通過 calc() 計算每個 item 的寬度,并處理單數情況。

三、代碼實現

1. HTML 結構

首先,我們定義一個容器 .box,并在其中動態生成 item

<div class="box"><div v-for="item in n" :key="item" class="item"></div>
</div>
  • .box 是容器,用于包裹所有 item
  • v-for 是 Vue 的語法,用于動態生成 item(假設 n 是動態的)。

2. CSS 樣式

接下來,我們通過 CSS 實現布局效果:

.box {display: flex;flex-wrap: wrap; /* 允許換行 */gap: 20px; /* 設置 item 之間的間隔 */
}.item {flex: 1 1 calc(50% - 10px); /* 每行兩個 item,減去間隔的一半 */box-sizing: border-box;background-color: #ccc;height: 100px; /* 設置 item 的高度 */border: 1px solid #999;
}/* 當 n 為單數時,最后一個 item 占滿整行 */
.item:last-child:nth-child(odd) {flex: 1 1 100%;
}

關鍵點解析:

  1. display: flex:將容器設置為彈性盒子,實現靈活的布局。
  2. flex-wrap: wrap:允許內容換行,確保每行只有兩個 item
  3. gap: 20px:設置 item 之間的間隔為 20px
  4. flex: 1 1 calc(50% - 10px)
    • flex-grow: 1:允許 item 擴展。
    • flex-shrink: 1:允許 item 收縮。
    • flex-basis: calc(50% - 10px):設置 item 的基礎寬度為 50% 減去間隔的一半(因為每行有兩個 item,總間隔為 20px,每個 item 分攤 10px)。
  5. item:last-child:nth-child(odd)
    • n 為單數時,最后一個 item 會匹配 :last-child:nth-child(odd)
    • 設置 flex: 1 1 100%,使其占滿整行。

四、效果演示

假設 n = 5,效果如下:

  • 前兩行每行有兩個 item,寬度各為 50%,間隔為 20px
  • 最后一行只有一個 item,寬度為 100%

HTML 示例:

<div class="box"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div>
</div>

效果:

  • 第一行:item 1item 2
  • 第二行:item 3item 4
  • 第三行:item 5 占滿整行。

五、完整代碼

以下是完整的 HTML + CSS 代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Flex 布局示例</title><style>.box {display: flex;flex-wrap: wrap;gap: 20px;}.item {flex: 1 1 calc(50% - 10px);box-sizing: border-box;background-color: #ccc;height: 100px;border: 1px solid #999;}.item:last-child:nth-child(odd) {flex: 1 1 100%;}</style>
</head>
<body><div class="box"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div></div>
</body>
</html>

您好,我是肥晨。
歡迎關注我獲取前端學習資源,日常分享技術變革,生存法則;行業內幕,洞察先機。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72776.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

preloaded-classes裁剪

系統預加載了哪些class類&#xff1f;system/etc/preloaded-classes 修改源代碼&#xff1f; frameworks\base\config\preloaded-classes 默認位置&#xff0c;如果改了不生效&#xff0c;可能有其它模塊的mk文件指定了preloaded-classes覆蓋了framework模塊&#xff0c;例如…

華為配置篇-OSPF基礎實驗

OSPF 一、簡述二、常用命令總結三、實驗3.1 OSPF單區域3.2 OSPF多區域3.3 OSPF 的鄰接關系和 LSA 置底 一、簡述 OSPF&#xff08;開放式最短路徑優先協議&#xff09; 基本定義 全稱&#xff1a;Open Shortest Path First 類型&#xff1a;鏈路狀態路由協議&#xff08;IGP&…

Orale數據文件加錯位置,你直接rm引發的故障

數據庫可能面臨硬件故障、人為錯誤、惡意攻擊、自然災害等多種潛在風險&#xff0c;那么今天這個故障就是由于業務人員加錯數據文件的位置&#xff0c;然后直接從物理層面rm -f了&#xff0c;導致了生產的故障&#xff01; 以下是針對Oracle數據庫物理刪除數據文件后的快速修復…

ChromeDriver下載 最新版本 134.0.6998.35

平時為了下個驅動&#xff0c;到處找挺麻煩&#xff0c;收集了很多無償分享給需要的人&#xff0c;僅供學習和交流。 ChromeDriver及瀏覽器134.0.6998.35 ChromeDriver及瀏覽器133.0.6943.141 ChromeDriver 102.0.5005.61 ChromeDriver 105.0.5195.102 ChromeDriver 108.0…

QEMU源碼全解析 —— 塊設備虛擬化(2)

接前一篇文章:QEMU源碼全解析 —— 塊設備虛擬化(1) 本文內容參考: 《趣談Linux操作系統》 —— 劉超,極客時間 《QEMU/KVM源碼解析與應用》 —— 李強,機械工業出版社 特此致謝! 上一回講解了幾種虛擬化方式(全虛擬化、半虛擬化和硬件輔助虛擬化)的優缺點及其對比…

Redis——緩存穿透、擊穿、雪崩

緩存穿透 什么是緩存穿透 緩存穿透說簡單點就是大量請求的 key 根本不存在于緩存中&#xff0c;導致請求直接到了數據庫上&#xff0c;根本沒有經過緩存這一層。舉個例子&#xff1a;某個黑客故意制造我們緩存中不存在的 key 發起大量請求&#xff0c;導致大量請求落到數據庫…

DELETE/ UPDATE/ INSERT 語句會自動加鎖

在數據庫系統中&#xff0c;DELETE、UPDATE 和 INSERT 語句通常會自動加鎖&#xff0c;以確保數據的一致性和并發控制。具體的鎖類型和效果取決于數據庫的實現&#xff08;如 MySQL、PostgreSQL 等&#xff09;以及事務的隔離級別。以下是這些操作通常加鎖的行為和效果&#xf…

【從零開始學習計算機科學】硬件設計與FPGA原理

硬件設計 硬件設計流程 在設計硬件電路之前,首先要把大的框架和架構要搞清楚,這要求我們搞清楚要實現什么功能,然后找找有否能實現同樣或相似功能的參考電路板(要懂得盡量利用他人的成果,越是有經驗的工程師越會懂得借鑒他人的成果)。如果你找到了的參考設計,最好還是…

SpringCloud—概述—01

一、微服務 1&#xff09;單體架構 業務的所有功能實現都打包在一個 war 包或者 jar 包中&#xff0c;這種方式就稱為 單體架構 例如&#xff0c;學校中實現的博客系統&#xff0c;前端后端數據庫實現&#xff0c;都是在一個項目中 把所有模塊都寫在一個 web 項目中&#x…

C++ 學生成績管理系統

一、項目背景與核心需求 成績管理系統是高校教學管理的重要工具,本系統采用C++面向對象編程實現,主要功能模塊包括: 學生信息管理(學號/姓名/3門課程成績) 成績增刪改查(CRUD)操作 數據持久化存儲 統計分析與報表生成 用戶友好交互界面 二、系統架構設計 1. 類結構設計 …

go的grpc

GRPC介紹 目錄 單體架構微服務架構問題原始的grpc 服務端客戶端原生rpc的問題 grpc的hello world 服務端客戶端 proto文件proto語法 數據類型 基本數據類型其他數據類型 編寫風格多服務 單體架構 只能對整體擴容一榮俱榮&#xff0c;一損俱損代碼耦合&#xff0c;項目的開…

1.12.信息系統的分類【ES】

專家系統&#xff08;ES&#xff09;技術架構深度解析 一、ES核心定義 &#x1f9e0; 智能決策中樞 由三大核心能力構建的領域專家模擬系統&#xff1a; 存儲專家級領域知識&#xff08;10^4規則量級&#xff09;支持不確定性推理&#xff08;置信度>85%&#xff09;動態…

考研數一非數競賽復習之Stolz定理求解數列極限

在非數類大學生數學競賽中&#xff0c;Stolz定理作為一種強大的工具&#xff0c;經常被用來解決和式數列極限的問題&#xff0c;也被譽為離散版的’洛必達’方法&#xff0c;它提供了一種簡潔而有效的方法&#xff0c;使得原本復雜繁瑣的極限計算過程變得直觀明了。本文&#x…

html播放本地音樂

本地有多個音樂文件&#xff0c;想用 html 逐個播放&#xff0c;或循環播放&#xff0c;并設置初始音量。 audio 在 html 中播放音樂文件用 audio 標簽&#xff1a; controls 啟用控制按鈕&#xff0c;如進度條、播放、音量、速度等。不加不顯示任何 widget。autoplay 理應啟…

DeepSeek-Manus精品課合集【附下載】

AI消息不斷&#xff0c;繼DeepSeek之后&#xff0c;又出了一個顛覆性的AI產品Manus&#xff0c;號稱全球第一個通用型AI。相比與DeepSeek&#xff0c; Manus擁有更強的自主性和執行力。 如果說DeepDeek是一個最強大腦&#xff0c;那么Manus就是一個完整的人&#xff01; DeepS…

MySQL復習筆記

MySQL復習筆記 1.MySQL 1.1什么是數據庫 數據庫(DB, DataBase) 概念&#xff1a;數據倉庫&#xff0c;軟件&#xff0c;安裝在操作系統&#xff08;window、linux、mac…&#xff09;之上 作用&#xff1a;存儲數據&#xff0c;管理數據 1.2 數據庫分類 關系型數據庫&#…

從源到目標:深度學習中的遷移學習與領域自適應實踐

引言&#xff1a;數據驅動的智能時代與遷移挑戰 在深度學習快速發展的今天&#xff0c;模型訓練對數據量和質量的依賴成為核心瓶頸。面對新場景時&#xff0c;標注數據不足、數據分布差異等問題常導致模型性能驟降。遷移學習&#xff08;Transfer Learning&#xff09;與領域自…

【網絡】HTTP協議、HTTPS協議

HTTP與HTTPS HTTP協議概述 HTTP&#xff08;超文本傳輸協議&#xff09;&#xff1a;工作在OSI頂層應用層&#xff0c;用于客戶端&#xff08;瀏覽器&#xff09;與服務器之間的通信,B/S模式 無狀態&#xff1a;每次請求獨立&#xff0c;服務器不保存客戶端狀態&#xff08;通…

Jmeter使用介紹

文章目錄 前言Jmeter簡介安裝與配置JDK安裝與配置JMeter安裝與配置 打開JMeter方式一方式二 設置Jmeter語言為中文方法一&#xff08;僅一次性&#xff09;方法二(永久設置成中文) Jmeter文件常用目錄 元件與組件元件組件元件的作用域元件的執行順序第一個案例添加線程組添加 H…

【NLP 32、文本匹配任務 —— 深度學習】

大劫大難以后&#xff0c;人不該失去銳氣&#xff0c;不該失去熱度&#xff0c;你鎮定了卻依舊燃燒&#xff0c;你平靜了卻依舊浩蕩&#xff0c;致那個從絕望中走出來的自己&#xff0c;共勉 —— 25.1.31 使用深度學習在文本匹配任務上主要有兩種方式&#xff1a;① 表示型 ②…