css3-flex布局:基礎使用 / Flexbox布局

一、理解flex

二、理解Flex布局(又稱Flexbox布局)

Flex布局(又稱Flexbox布局)是一種基于Web的CSS3布局模式,其目的是為了更加靈活和自適應地布置各種各樣的網頁元素。Flex布局通過將一個父容器分割為一個或多個彈性項目,使得這些項目能夠按照一定規則相互排列,并且自動適應它們所處的容器環境。

在Flex布局中,父容器成為“flex container”,子元素成為“flex item”。Flex容器有兩個重要的屬性:flex-direction和justify-content。flex-direction主要用來決定flex item在主軸上的排列方向,而justify-content則用來對flex item進行主軸方向上的對齊。

除了這些基本屬性之外,Flex布局還具有許多其他的屬性,例如:align-items、align-content、flex-wrap、order、flex-grow、flex-shrink等。這些屬性用來定義flex item在交叉軸和主軸上的排序方式以及它們在父容器中所占的空間大小。

flex布局是一種比較高級的網頁排版技術,它能夠幫助開發者輕松地實現復雜的網頁布局效果,并且具有靈活和響應式的特點。

三、設置了 flex 布局后,以下屬性將失效

序號屬性備注
1float
2clear
3vertical-align在 Flex 容器中只能用于對齊 Flex 項目中的內聯元素或文字
4display:inline-block
5width可以在 Flex 項目上設置
6height可以在 Flex 項目上設置
7margin: auto在 Flex 容器上無法將 Flex 項目水平居中,需要使用justify-content:center實現
8flex-direction: row該屬性被設置為默認值flex-direction: row,如果需要更改主軸方向,應該使用flex-direction屬性
9flex-wrap: nowrap該屬性被設置為默認值flex-wrap:nowrap,如果需要實現換行或不換行,應該使用flex-wrap屬性
10justify-content: flex-start該屬性被設置為默認值,如果需要更改主軸方向上的對齊方式,應該使用justify-content屬性
注意:這并不是絕對的,還取決于具體的屬性值和 Flex 項目的結構。有些情況下上述屬性仍然可以正常使用

四、Flex布局有以下核心概念

4.1、Flex容器(Flex Container):應用了 Flex 布局的元素,稱為 Flex 容器。其作用是定義 Flex 項目所在的容器,使 Flex 項目能夠進行彈性布局。

4.2、Flex項目(Flex Item):Flex 容器中的子元素稱為 Flex 項目(Flex Item),每個 Flex 項目都具有彈性盒的屬性。同時,它們也受到 Flex 容器的限制,如放置的方向、排列順序等。

4.3、Flex軸(Main Axis):Flex 容器主要的放置方向即為 Flex 軸。在該軸上,Flex 容器中的 Flex 項目會被依次排列。

4.4、Flex交叉軸(Cross Axis):與 Flex 軸垂直的軸稱為 Flex 的交叉軸。在該軸上,Flex 項目所占據的空間是有限制的,具體大小由 Flex 容器的屬性決定。

4.5、主軸方向屬性(justify-content):該屬性用于控制 Flex 項目在 Flex 軸上的對齊方式。它可以讓 Flex 項目在主軸方向上看起來更加美觀,通常被用于實現水平對齊或垂直對齊。

4.6、交叉軸方向屬性(align-items):該屬性用于控制 Flex 項目在交叉軸上的對齊方式。它可以讓 Flex 項目在交叉軸方向上看起來更加美觀,通常被用于實現水平對齊或垂直對齊。

4.7、彈性元素屬性(flex):該屬性用于控制 Flex 項目如何分配 Flex 容器中可用空間。該屬性的值決定了 Flex 項目的伸縮性,它能夠讓 Flex 項目在 Flex 容器中的尺寸發生變化,以適應不同的屏幕尺寸或者容器大小。

五、Flex容器

Flex容器是包含Flex項目的父級元素,通過設置該元素的display屬性為flex或inline-flex,即可創建一個Flex容器。

序號屬性屬性描述值描述
1display指定容器為Flex布局flex主軸水平方向排列
inline-flex主軸垂直方向排列
2flex-direction指定主軸的方向row從左到右
row-reverse水平方向(從右到左)
column垂直方向(從上到下)
column-reverse垂直方向(從下到上)
3justify-content指定主軸上的對齊方式flex-start靠近起點對齊
flex-end靠近終點對齊
center居中對齊
space-between兩端對齊
space-around間隔對齊
4align-items指定交叉軸上的對齊方式flex-start靠近起點對齊
flex-end靠近終點對齊
center居中對齊
baseline基線對齊
stretch拉伸對齊
5align-content指定多根軸線的對齊方式(僅當交叉軸為多根軸線時有效)flex-start多行項目對齊于交叉軸的起始位置
flex-end多行項目對齊于交叉軸的結束位置
center多行項目在交叉軸上居中對齊
space-between多行項目在交叉軸上平均分布,首尾項目對齊于容器兩端,項目之間的距離相等。
space-around多行項目在交叉軸上平均分布,項目之間的距離相等,首尾項目距離容器兩端的距離是其他項目之間距離的一半
stretch多行項目在交叉軸上拉伸以充滿容器的高度。
6flex-wrap指定元素是否換行nowrap不換行
wrap換行
wrap-reverse反向換行
7flex-flow用于同時設置 flex 容器的主軸和交叉軸的方向和排列方式,它是 flex-direction 和 flex-wrap 兩個屬性的縮寫row主軸為水平方向,起點在左端
row-reverse主軸為水平方向,起點在右端
column主軸為垂直方向,起點在上方
column-reverse主軸為垂直方向,起點在下方
wrap換行,第一行在上方
wrap-reverse換行,第一行在下方
nowrap不換行,所有元素排在一行上
inherit從父元素繼承值
8align-self設置單個項目在交叉軸上的對齊方式auto默認值,元素繼承父元素在交叉軸方向上的對齊方式
flex-start元素在交叉軸的起點對齊
flex-end元素在交叉軸的終點對齊
center元素在交叉軸的中心對齊
baseline元素在交叉軸上以基線對齊
stretch將元素在交叉軸上拉伸至撐滿整個交叉軸

六、Flex項目

Flex項目是Flex容器中的子元素,通過設置該元素的flex屬性,即可使其成為一個Flex項目。

序號屬性屬性描述
1justify-content控制項目在主軸上的對齊方式
2align-items控制項目在交叉軸上的對齊方式
3flex-direction控制主軸的方向
4flex-wrap控制項目在一行內排列不下時的換行方式
5align-content控制多行項目在交叉軸上的對齊方式
6flex-grow表示Flex項目在空間分配時的放大比例。
flex-grow的默認值為0,數值越大,空間分配越多。
7flex-shrink表示Flex項目在空間不足時的縮小比例。
flex-shrink的默認值為1,數值越大,縮小比例越多,設置為 0 不縮放 。
8flex-basis表示Flex項目在空間分配前的初始大小。
flex-basis的默認值為auto,可以設置具體數值或百分比。
9order表示Flex項目在容器中的排列順序。
order的默認值為0,數值越小,排列越靠前。可以使用負數值。
10flex是flex-grow, flex-shrink 和flex-basis的縮寫,可以一次性設置以上三個屬性
是flex-gflex的默認值為0 1 auto。

七、DEMO / vue3.3 +?ts

7.1、水平、垂直 居中

?

<template><div class="container"><!-- 水平、垂直 居中 --><div class="flex"><div class="flex_item"></div></div></div>
</template><script setup lang="ts">
</script><style scoped lang="less">
.container{.flex{display: flex;justify-content: center; // 水平居中align-items: center; // 垂直居中width: 200px;height: 200px;background: #ff0000;&_item{width: 50px;height: 50px;background: #b3de1b;}}
}
</style>

7.2、flex-shrink

<template><div class="container"><div class="flex"><div class="flex_item">1</div><div class="flex_item">2</div><div class="flex_item">3</div><div class="flex_item">4</div><div class="flex_item">5</div><div class="flex_item">6</div><div class="flex_item">7</div></div></div>
</template><script setup lang="ts">
</script><style scoped lang="less">
.container{.flex{display: flex;width: 200px;height: 200px;background: #ff0000;&_item{width: 50px;height: 50px;background: #b3de1b;flex-shrink: 0; // 表示Flex項目在空間不足時的縮小比例。flex-shrink的默認值為1,數值越大,縮小比例越多,設置為 0 不縮放 。}}
}
</style>

7.3、flex-wrap: wrap; / 換行

7.4、 align-content: flex-start; /?多行項目對齊于交叉軸的起始位置

?

八、過程記錄

8.1、display flex 和 inline-flex區別

displayflexinline-flex
布局方向不同display:flex是主軸水平方向排列display:inline-flex是主軸垂直方向排列
元素占用空間不同display:flex元素會占據一行(即父元素寬度)display:inline-flex元素只占據它所包含內容的空間
默認屬性不同display:flex默認屬性是flex-direction:rowdisplay:inline-flex默認屬性是flex-direction:row-reverse
元素排列方式不同display:flex元素默認排列方式為flex-startdisplay:inline-flex元素默認排列方式為baseline

參考鏈接

Flex 布局語法教程 | 菜鳥教程

30 分鐘學會 Flex 布局 - 知乎

flex布局(詳解)_杰杰堅強的博客-CSDN博客

flex布局詳細教程

處理:end value has mixed support, consider using flex-end instead_星月I隨心的博客-CSDN博客

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

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

相關文章

圖解WebSocket

&#x1f44f;作者簡介&#xff1a;大家好&#xff0c;我是愛寫博客的嗯哼&#xff0c;愛好Java的小菜鳥 &#x1f525;如果感覺博主的文章還不錯的話&#xff0c;請&#x1f44d;三連支持&#x1f44d;一下博主哦 &#x1f4dd;個人博客&#xff1a;敬請期待 文章目錄 前言一、…

Qt 加載 libjpeg 庫出現“長跳轉已經運行”錯誤

在我以為升級到 Qt5.15.9 后&#xff0c;運行沒有什么問題時&#xff0c;問題就來了 在加載 jpeg 格式的圖片時&#xff0c;出現了“長跳轉已經運行”的錯誤 這個錯誤一般是由 setjmp/longjmp 函數觸發的&#xff0c;出現的可能的原因有以下幾種&#xff08;聽聽 chatgpt 的回…

常用的免費敏捷工具

? Scrum中非常強調公開、透明、直接有效的溝通&#xff0c;這也是“可視化的管理工具”在敏捷開發中如此重要的原因之一。通過“可視化的管理工具”讓所有人直觀的看到需求&#xff0c;故事&#xff0c;任務之間的流轉狀態&#xff0c;可以使團隊成員更加快速適應敏捷開發流程…

VMware Workstation 如何啟用復制粘貼

產品&#xff1a;VMware Workstation 16 Pro 版本&#xff1a;16.1.1 build-17801498 我們剛安裝好的 VMware Workstation 會發現無法復制粘貼文件到虛擬機中&#xff0c;如下為解決方案&#xff1a; 1.點擊 虛擬機&#xff0c;點擊 安裝 VMware Tools(T)...。 2.虛擬機下面會…

詳細安裝配置django

安裝配置使用Django。 1&#xff0c;下載安裝 django pip install django 2.創建設置項目 先進入要放置項目的文件夾下 2.1&#xff0c; 創建項目 django-admin startproject Api_project 2.2&#xff0c; 創建app命令 cd Api_project dir看一下是否有 manage.py 文件…

ASPICE流程發布和維護

ASPICE流程發布和維護是指在軟件開發完成后&#xff0c;將軟件發布給客戶&#xff0c;并進行維護和支持。這一過程包括以下步驟&#xff1a; 軟件發布&#xff1a;將符合ASPICE標準的軟件發布給客戶&#xff0c;確保軟件可以正常運行并滿足客戶需求。 用戶培訓&#xff1a;對客…

23牛客多校9 I Non-Puzzle: Segment Pair

也許更好的閱讀體驗 D e s c r i p t i o n \mathcal{Description} Description 給 n n n對區間&#xff0c;要求每對區間恰好選一個使得選出來的 n n n個區間有交集&#xff0c;問有多少方案數 1 ≤ n , l i , r i ≤ 5 1 0 5 1\le n, l_i,r_i\le 510^5 1≤n,li?,ri?≤510…

2023-08-11 LeetCode每日一題(矩陣對角線元素的和)

2023-08-11每日一題 一、題目編號 1572. 矩陣對角線元素的和二、題目鏈接 點擊跳轉到題目位置 三、題目描述 給你一個正方形矩陣 mat&#xff0c;請你返回矩陣對角線元素的和。 請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和。 示例 1&#xff1…

企業計算機服務器中了Devos勒索病毒怎么辦,勒索病毒解密

社會在發展&#xff0c;科技在進步&#xff0c;企業的生產也得到了很大改善&#xff0c;但是隨著網絡技術的不斷發展&#xff0c;越來越多的企業遭到的網絡安全威脅開始增多&#xff0c;其中較為明顯的就是勒索病毒攻擊。預防勒索病毒攻擊成為日常生活中不可或缺的一部分工作。…

8,四個類型轉換const_cast、reinterpret_cast、dynamic_cast、static_cast

類型轉換const_cast、reinterpret_cast、dynamic_cast、static_cast const_castreinterpret_castdynamic_caststatic_cast const_cast 被const修飾的函數可以被訪問&#xff0c;但是不能被修改成員變量 const_cast可以去掉const #include <iostream> using namespace s…

SyntaxError: Cannot use import statement outside a module

node環境運行報錯&#xff1a; 解決步驟&#xff1a; 1. npm init -y 2. 在 package.json 文件中加入一條&#xff1a;"type": "module", 3. 保存后再執行即可 附&#xff1a;最好是不要在node用import&#xff0c;否則需要上次配置 建議1&#xff1a;用re…

el-table實現靜態和動態合并單元格 以及內容顯示的問題

實現效果圖 <el-tablev-loading"loading":data"tableData"style"width: 100%":row-class-name"tableRowClassName"size"small"><el-table-column fixed label"序號" width"50"><el-tab…

Detecting Twenty-thousand Classes using Image-level Supervision

Detecting Twenty-thousand Classes using Image-level Supervision 摘要背景方法PreliminariesDetic:具有圖像類別的檢測器loss技術細節擴展Grad-CAMGrad-CAM原理 總結 摘要 摘要 由于檢測數據集的規模較小&#xff0c;目前的物體檢測器在詞匯量方面受到限制。而圖像分類器的數…

LeetCode_03Java_1572. 矩陣對角線元素的和

給你一個正方形矩陣 mat&#xff0c;請你返回矩陣對角線元素的和。 請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和。 輸入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 輸出&#xff1a;25 解釋&#xff1a;對角線的和為&#xff1a;1 5 9 3 7 2…

Scratch 之 3D 介紹及教程

第一章 為什么 3D 很難&#xff1f; 1.1 3D 難在何處&#xff1f; 3D 之所以會使我們覺得困難&#xff0c;是因為 Scratch 軟件只有兩個坐標軸&#xff0c;既&#xff1a;X軸、Y軸。 2維坐標系 而 3D 卻擁有三個坐標軸&#xff1a; 3維坐標系 怎么辦&#xff1f;很簡單&…

Gin各種參數接收

Gin參數接收 文章目錄 Gin參數接收1.各個參數的接收方法Gin中發送JSON數據Gin接收querystring數據Gin接收Form的參數Gin接收URI參數 2.參數綁定方式接收(更加方便)推薦一款軟件 1.各個參數的接收方法 聲明: 這里的c都是c *gin.Context中的c Gin中發送JSON數據 在傳輸或接受JS…

33 | 美國總統數據分析

在這個數據分析項目中,利用Pandas等Python庫對美國2020年7月22日至2020年8月20日期間的超過75萬條捐贈數據進行了深入的探索和分析。通過這一分析,他們揭示了這段時間內美國選民對總統候選人的偏好和捐款情況。以下是對文章中的主要步驟和內容的進一步描述: 數據集處理: 作…

Jquery 復選框點擊生成標簽 源代碼

html <!DOCTYPE html> <html><head><meta charset"utf-8"><title>服務資源管理</title><link rel"stylesheet" type"text/css" href"../lib/layui/css/layui.css" /><link rel"st…

2023牛客第八場補題報告A H J K

2023牛客第八場補題報告A H J K A-Alive Fossils_2023牛客暑期多校訓練營8 (nowcoder.com) 思路 統計字符串&#xff0c;取出現次數為t的。 代碼 #include <bits/stdc.h> #define int long long #define endl \n #define IOS ios::sync_with_stdio(0), cin.tie(0), …

【C++】面試題

1、都說c是面向對象的語言&#xff0c;面向對象的三個特性能 [展開] 介紹一下嗎&#xff1f; 封裝&#xff1a;封裝是一種集中管理的思想&#xff0c;把內部的數據和實現方法組合在一起&#xff0c;并且不對外暴漏內部的數據和實現方法&#xff0c;只對外提供幾個接口來完成函數…