htmlCSS-----彈性布局

?目錄

前言

什么是彈性布局

?樣式

?學習概要

容器和項目

彈性布局的排列方式

1.橫向排列(默認樣式)

?2.父元素容器的屬性(*5)

(1)主軸?

代碼示例:

?(2)交叉軸

3.子元素項目的屬性(*4)


前言

? ? ? ? 前面我們學習了浮動布局方式,那么今天我們學習新的布局方式---彈性布局,這類布局方式可以使得我們的頁面實現自適應或者按比例縮放的效果,不需要去一個個調整,那下面我們就一起去看看吧。

什么是彈性布局

傳統布局基本依靠display float position來完成,有些特殊的布局寫起來不太方便。

CSS3 彈性盒( Flexible Box 或 flexbox),是一種當頁面需要適應不同的屏幕大小以及設備類型時確保元素擁有恰當的行為的布局方式。引入彈性盒布局模型的目的是提供一種更加有效的方式來對一個容器中的子元素進行排列、對齊和分配空白空間

????????相較于浮動,彈性布局是屬于文檔流的,而浮動是屬于脫離文檔流的?

?樣式

為父級元素添加 display: flex; 或者 display: inline-flex; 。其子元素則可按照彈性盒模型的規則進行布局。

?學習概要

1.什么是容器

2.什么是項目

3.什么是主軸

4.什么是交叉軸

下面我會按照以上的四個問題的方向一一去講解說明彈性布局的特點和性質,搞懂了這四個問題基本上就理解了彈性布局了。

容器和項目

容器:是設定了display: flex; 的樣式的盒子作為容器

項目:容器里面的子類元素就作為項目

看下面代碼示例:?

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.div{display: flex;width: 800px;height: 500px;border: 2px solid;}</style>
</head>
<body><!-- 這里div類是屬于容器 --><div class="div"><!-- 這里的div1是div的子類是屬于項目 --><div class="div1"><!-- 這里的div2是div1的子類,但不是項目 --><div class="div2"></div></div></div>
</body>
</html>

彈性布局的排列方式

父級為彈性盒模型時,子元素默認有一些特殊的展示方式。當然我們可以通過后面的學習知道如何改變這些展示方式。

1.橫向排列(默認樣式)

默認盒模型中,各子元素上下排列,彈性盒模型中,子元素默認按主軸從左到右橫向排列。(可以通過屬性改變主軸及主軸起點),這就是彈性布局的默認形式。

看代碼示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.divall{width: 800px;height: 600px;border: 1px solid;display:flex;}.div{/* 注意 我把每一個子元素盒子的寬度設置為500px */width: 500px;height: 300px;}.div1{background-color: red;}.div2{background-color: blue;}.div3{background-color: aquamarine;}.div4{background-color: rosybrown;}.div5{background-color: rgb(127, 255, 142);}</style>
</head>
<body><!-- 彈性布局盒子 --><div class="divall"><div class="div1 div"></div><div class="div2 div"></div><div class="div3 div"></div><div class="div4 div"></div><div class="div5 div"></div></div>
</body>
</html>

效果展示:

?子元素總寬大于父級寬度,默認不換行,按比例縮放各個子元素的寬,上面我把每一個子元素盒子的寬度設置為500px,實際上整個父元素盒子的寬度只有800px,所以這里會按照1:1的形式進行一一縮放,直到寬度填滿這個父元素盒子的寬度為止,這就是彈性布局的自適應特點。

?2.父元素容器的屬性(*5)

(1)主軸?

flex-direction

flex-direction屬性決定主軸的方向,默認為row,即水平方向,起點在左。

子項目按照主軸的方向從起點開始排列。

注意:主軸方向是只有一個的,主軸數量是可以多個的

  • row ,默認值,水平主軸,起點在左;

  • row-reverse,水平主軸,起點在右;

  • column,垂直主軸,起點在上;

  • column-reverse,垂直主軸,起點在下

flex-wrap

flex-wrap屬性決定子元素主軸擺放不下的時候,項目換不換行,默認不換行。

  • none ,默認值,不換行;(擺放不下按比例縮放)

  • wrap,換行,第一排在最前;

  • wrap-reverse,換行,最后一排在最前。

justify-content

justify-content屬性定義子元素在主軸的對齊方式。

  • flex-start,默認值,起點對齊;

  • flex-end,終點對齊;

  • center,居中

  • space-between,兩端對齊,中間間隔分均分配;

  • space-around,所有間隔分均分配,即所有子元素擁有相同的左右(上下)間隔。

  • space-evenly 所有間隔平均分均

代碼示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.divall{width: 800px;height: 500px;border: 1px solid;display:flex;/* 按x軸為主軸,默認 */flex-direction: row;/* 設置為所有間隔分均分配,即所有子元素擁有相同的左右(上下)間隔。 */justify-content: space-around;/* 如果子元素寬度大于父元素寬度進行換行 */flex-wrap: wrap;}.div{width: 250px;height: 300px;}.div1{background-color: red;}.div2{background-color: blue;}.div3{background-color: aquamarine;}.div4{background-color: rosybrown;}.div5{background-color: rgb(127, 255, 142);}</style>
</head>
<body><!-- 彈性布局盒子 --><div class="divall"><div class="div1 div"></div><div class="div2 div"></div><div class="div3 div"></div><div class="div4 div"></div><div class="div5 div"></div></div>
</body>
</html>

效果如下:

?以上的主軸是x軸所以會以x軸作為基準,如果子元素盒子的高度大于父元素的高度的話,那么就胡出現超出的情況。

?(2)交叉軸

align-items

align-items定義子元素在副軸的對齊方式。

  • flex-start,副軸起點對齊;

  • flex-end,副軸終點對齊;

  • center,副軸居中對齊;

  • baseline,文本基線對齊

  • stretch,默認值,子元素如果沒有設置高度(寬度),占滿整個容器。(如果全部子元素都有設置高度值,則表現和flex-start一致。)

align-content

align-content屬性定義多主軸之間(也就是換行后行與行之間)的對齊方式。所以,如果子元素沒有換行,這個屬性就不起作用。

  • flex-start,副軸起點對齊;

  • flex-end,副軸終點對齊;

  • center,副軸居中對齊;

  • space-between,副軸兩端對齊,中間平均分配;

  • space-around,每行之間間距平均分配;

  • strecth,默認值,如果子元素沒有設置高度,則占滿對應主軸。(其余5個值中,沒有設置高度的子元素和該行最高的高度一樣)

  • space-evenly 所有間隔平均分均

3.子元素項目的屬性(*4)

flex-basis

flex-basis屬性定義在分配空間之前,子元素占據的主軸空間大小。默認值auto即元素本來的大小。

這里只接受一個值,這個值的大小是表示子元素盒子內容的大小,并不是寬度的大小。實際上這個樣式一般不怎么用,我們一般會提前設置好寬度和高度

如圖所示:

order

order屬性定義子元素(視覺上)的展示順序,值為一個數字,越小越優先擺放。如果沒設置的話,默認是為0.

flex-shrink

flex-shrink屬性用于規定 主軸空間不足時 子元素縮小的分配比例,默認為1,即分均分配來縮小。

計算方式:?

<style>*{ margin: 0; padding: 0;}.wrap{display: flex;width: 400px;height: 100px;margin: 20px auto;border: 1px solid red;font-size: 26px;font-weight: bolder;}.wrap .d1{width: 150px;background-color: #99cc99;flex-shrink: 1;}.wrap .d2{width: 200px;background-color: #f60; flex-shrink: 1;}.wrap .d3{width: 250px;background-color: #1da6ba; flex-shrink: 2;}
</style>
<div class="wrap"><div class="d1">1</div><div class="d2">2</div><div class="d3">3</div>
</div>

?

flex-grow

flex-grow屬性用于規定 主軸有剩余空間時 子元素增大的分配比例,默認為0,即不增大。

<style>*{ margin: 0; padding: 0;}.wrap{display: flex;width: 400px;height: 100px;margin: 20px auto;border: 1px solid red;font-size: 26px;font-weight: bolder;}.wrap .d1{width: 50px;background-color: #99cc99;}.wrap .d2{width: 150px;flex-grow: 1;background-color: #f60;}.wrap .d3{width: 50px;flex-grow: 2;background-color: #1da6ba;}
</style>
<div class="wrap"><div class="d1">1</div><div class="d2">2</div><div class="d3">3</div>
</div>

?好了,以上就是今天的全部內容了,我們下一期再見!!!

分享一張壁紙:

櫻花莊的寵物女孩_360百科

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

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

相關文章

正則表達式試煉

序 我希望在這里列出我很多想寫的正則表達式&#xff0c;很多我想寫&#xff0c;但是不知道怎么寫的。分享點滴案例。未來這個文章會越來越長 前言 互聯網時代&#xff0c;除了文本還有更好的學習方式&#xff0c;下面是幾個不錯的練習網站&#xff0c;如果你想系統地學習&a…

[Flutter]有的時候調用setState(() {})報錯?

先看FlutterSDK的原生類State中有一個變量mounted。 abstract class State<T extends StatefulWidget> with Diagnosticable {/// mounted的作用是&#xff0c;此State對象當前是否在樹中。/// 在創建State對象之后&#xff0c;在調用initState之前&#xff0c;框架通過…

【Linux】【驅動】應用層和驅動層傳輸數據

【Linux】【驅動】應用層和驅動層傳輸數據 緒論1.如果我在應用層使用系統0 對設備節點進行打開&#xff0c;關閉&#xff0c;讀寫等操作會發生什么呢? 2 我們的應用層和內核層是不能直接進行數據傳輸的3 驅動部分的代碼4 應用代碼5 編譯以及運行代碼 緒論 Linux一切皆文件! 文…

如何使用CSS實現一個下拉菜單?

聚沙成塔每天進步一點點 ? 專欄簡介? 使用CSS實現下拉菜單? HTML 結構? CSS 樣式? 寫在最后 ? 專欄簡介 前端入門之旅&#xff1a;探索Web開發的奇妙世界 記得點擊上方或者右側鏈接訂閱本專欄哦 幾何帶你啟航前端之旅 歡迎來到前端入門之旅&#xff01;這個專欄是為那些…

學習筆記」左偏樹

dist 的性質 對于一棵二叉樹&#xff0c;我們定義左孩子或右孩子為空的節點為外節點&#xff0c;定義外節點的 distdist 為 11&#xff0c;空節點的 distdist 為 00&#xff0c;不是外節點也不是空節點的 distdist 為其到子樹中最近的外節點的距離加一。 一棵根的 distdist 為…

中間件(下)

1、中間件與性能優化的關系&#xff1a; 中間件與性能優化之間存在密切的關系&#xff0c;特別是在構建復雜的分布式系統、處理高并發、實現異步通信等情況下。中間件可以在性能優化方面發揮重要作用&#xff0c;但同時&#xff0c;不當的中間件選擇和配置也可能導致性能問題。…

【卡碼網】31. 字符串的最大價值 <貪心>

【卡碼網】31. 字符串的最大價值 給定一個字符串 S S S&#xff08;S.lenth < 5000&#xff09;&#xff0c;只包含 0 和 1 兩個數字&#xff0c;下標從 1 開始&#xff0c;設第 i i i 位的價值為 v a l i val_i vali?&#xff0c;則 v a l i val_i vali?的定義如下&a…

神經網絡基礎-神經網絡補充概念-52-正則化網絡的激活函數

概念 正則化是一種用于減少過擬合&#xff08;overfitting&#xff09;的技術&#xff0c;可以在神經網絡的各個層次中應用&#xff0c;包括激活函數。激活函數的正則化主要目的是減少神經網絡的復雜度&#xff0c;防止網絡在訓練集上過度學習&#xff0c;從而提高泛化能力。 …

ubuntu20.04 root用戶下使用中文輸入法——root用戶pycharm無法用中文輸入法問題

因為一些眾所不周知的bug&#xff0c;我的pycharm使用apt或者snap安裝都不行了&#xff0c;官網下了“綠色版”&#xff0c;運行pycharm.sh也運行不起來&#xff0c;有個java相關環境報錯&#xff0c;jre和jdk都裝了&#xff0c;還是有點問題&#xff0c;最后嘗試發現可以用roo…

DevOps系列文章之 GitlabCICD自動化部署SpringBoot項目

一、概述 本文主要記錄如何通過Gitlab CI/CD自動部署SpringBoot項目jar包。 二、前期準備 準備三臺 CentOS7服務器&#xff0c;分別部署以下服務&#xff1a; 序號系統IP服務1CentOS7192.168.56.10Gitlab2CentOS7192.168.56.11Runner &#xff08;安裝Docker&#xff09;3Cen…

Spring boot中的線程池-ThreadPoolTaskExecutor

一、jdk的阻塞隊列&#xff1a; 二、Spring boot工程的有哪些阻塞隊列呢&#xff1f; 1、默認注入的ThreadPoolTaskExecutor 視頻解說&#xff1a; 線程池篇-springboot項目中的service層里簡單注入ThreadPoolTaskExecutor并且使用_嗶哩嗶哩_bilibili 程序代碼&#xff1a;…

預測算法|改進粒子群算法優化極限學習機IDM-PSO-ELM

回歸擬合&#xff1a; 分類 本文是作者的預測算法系列的第四篇&#xff0c;前面的文章中介紹了BP、SVM、RF及其優化&#xff0c;感興趣的讀者可以在作者往期文章中了解&#xff0c;這一篇將介紹——極限學習機 過去的幾十年里基于梯度的學習方法被廣泛用于訓練神經網絡&am…

分布式 - 消息隊列Kafka:Kafka 消費者消息消費與參數配置

文章目錄 1. Kafka 消費者消費消息01. 創建消費者02. 訂閱主題03. 輪詢拉取數據 2. Kafka 消費者參數配置01. fetch.min.bytes02. fetch.max.wait.ms03. fetch.max.bytes04. max.poll.records05. max.partition.fetch.bytes06. session.timeout.ms 和 heartbeat.interval.ms07.…

使用 pyodbc 解析chrome瀏覽器導出的書簽并保存到 Microsoft Access 數據庫

使用 wxPython 和 pyodbc 解析書簽并保存到 Microsoft Access 數據庫的示例博客&#xff1a; 本篇博客介紹了如何使用 wxPython 和 pyodbc 庫創建一個簡單的應用程序&#xff0c;用于解析 HTML 文件中的書簽并將其保存到 Microsoft Access 數據庫中。通過這個示例&#xff0c;您…

【Sklearn】基于梯度提升樹算法的數據分類預測(Excel可直接替換數據)

【Sklearn】基于梯度提升樹算法的數據分類預測(Excel可直接替換數據) 1.模型原理2.模型參數3.文件結構4.Excel數據5.下載地址6.完整代碼7.運行結果1.模型原理 梯度提升樹(Gradient Boosting Trees)是一種集成學習方法,用于解決分類和回歸問題。它通過將多個弱學習器(通常…

ONNX版本YOLOV5-DeepSort (rknn版本已經Ready)

目錄 1. 前言 2. 儲備知識 3. 準備工作 4. 代碼修改的地方 5.結果展示 1. 前言 之前一直在忙著寫文檔&#xff0c;之前一直做分類&#xff0c;檢測和分割&#xff0c;現在看到跟蹤算法&#xff0c;花了幾天時間找代碼調試&#xff0c;看了看&#xff0c;展示效果比單純的檢…

手寫代碼-前端面試

GitHub&#xff1a;手寫代碼集合

HTTP響應狀態碼大全:從100到511,全面解析HTTP請求的各種情況

文章目錄 前言一、認識響應狀態碼1. 什么是HTTP響應狀態碼2. Http響應狀態碼的作用3. 優化和調試HTTP請求的建議 二、1xx 信息響應1. 認識http信息響應2. 常見的信息響應狀態碼 三、2xx 成功響應1. 認識HTTP成功響應2. 常見的成功響應狀態碼 四、3xx 重定向1. 認識http重定向2.…

【javascript】isNaN(‘2-1‘)結果為什么是true

在JavaScript中&#xff0c;isNaN函數用于檢查一個值是否為NaN&#xff08;非數字&#xff09;。當給定的值無法被解析為數字時&#xff0c;isNaN函數會返回true。 因此&#xff0c;使用isNaN(‘2-1’)進行判斷時&#xff0c;2-1’是一個字符串&#xff0c;它包含一個減號&…

github ssh配置

1、生成公鑰 用下面的命令生成公鑰 ssh-keygen -t rsa -b 4096 -C 郵箱 生成的公鑰默認在文件夾 ~/.ssh/ 下的 id_rsa.pub 2、在github配置本地的公鑰 先復制本地公鑰文件中的內容 cat ~/.ssh/id_rsa.pub 打開github的settings > SSH and GPG keys > new SSH key …