搜尋
首頁web前端js教程flex佈局詳解

flex佈局詳解

Mar 13, 2018 pm 06:04 PM
flex佈局詳解

這次帶給大家flex佈局詳解,flex佈局詳解的注意事項有哪些,以下就是實戰案例,一起來看一下。

垂直居中是一種常見的頁面佈局方式,對於行內元素可以設定text-align:center;vertical-align:center實現,
而對於區塊級元素通常可以透過以下設定實現

.parent{    position: relative;
}.child{    position: absolute;    top: 50%;    left: 50%;    transform: translate(-50%,-50%);
}

然而為了css的簡單優雅,除inline、inline-block、block佈局外,css第四種佈局方式flex應運而生
只需以下設定就可以輕鬆實現元素垂直居中

.parent{    display: flex;    justify-content: center;    align-items: center;
}

注意:設為flex佈局,子元素的float、clear和vertical-align屬性將失效

基本概念

採用flex佈局的元素,稱為flex容器。元素內所有的子元素稱為flex項目。
容器預設存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。
主軸的起始位置(與邊框的交叉點)叫做main start,結束位置叫做main end;交叉軸的起始位置叫做cross start,結束位置叫做cross end。
專案預設沿著主軸排列,單一專案佔據的主軸空間叫做main size,佔據的交叉軸空間叫做cross size。

flex容器的屬性

flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content
flex-direction

flex-direction屬性決定主軸的方向。

row(預設值):主軸為水平方向,起點在左端

row-reverse:主軸為水平方向,起點在右端

column:主軸為垂直方向,起點在上方沿

column-reverse:主軸為垂直方向,起點在下沿

flex-wrap

預設情況下,項目都排在主軸線上, flex-wrap屬性定義設定如果一行主軸線排不下,如何換行。

nowrap(預設值):,不換行

wrap :換行,第一行在上邊

wrap-reverse:換行,第一行在下邊

flex-flow

flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,
預設值為row nowrap。

justify-content

justify-content屬性定義了項目(自元素)在主軸上的對齊方式。

flex-start(預設值):左對齊

flex-end:右對齊

center: 居中

space-between:兩端對齊,項目之間的間隔都相等。

space-around:每個項目兩側的間隔相等。所以,專案之間的間隔比專案與邊框的間隔大一倍。

align-items

align-items屬性定義項目在交叉軸上如何對齊。

stretch(預設值):如果項目未設定高度或設為auto,將佔滿整個容器的高度。

flex-start:交叉軸的起點對齊。

flex-end:交叉軸的終點對齊。

center:交叉軸的中點對齊。

baseline: 專案的第一行文字的基線對齊。

align-content

align-content屬性定義了多根軸線的對齊方式。如果項目只有一根軸線,則該屬性不起作用。

stretch(預設值):軸線佔滿整個交叉軸。

flex-start:與交叉軸的起點對齊。

flex-end:與交叉軸的終點對齊。

center:與交叉軸的中點對齊。

space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈。

space-around:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。

flex項目(自元素)屬性

order
flex-grow
flex-shrink
flex-basis
flex
align-self
order

order屬性定義項目的排列順序。數值越小,排列越前,預設為0。

flex-grow

flex-grow屬性定義項目的放大比例,預設為0,即如果存在剩餘空間,也不放大。
如果所有項目的flex-grow屬性都為1,則它們將等分剩餘空間。
如果一個項目的flex-grow屬性為2,其他項目都是1,則前者佔據的剩餘空間將比其他項多一倍。

flex-shrink

flex-shrink屬性定義了項目的縮小比例,預設為1,即如果空間不足,該項目將縮小。
如果所有項目的flex-shrink屬性都是1,當空間不足時,都會等比例縮小。
如果一個項目的flex-shrink屬性為0,其他項目都是1,則空間不足時,前者不縮小。
負值對該屬性無效。

flex-basis

flex-basis屬性定義了在分配多餘空間之前,專案佔據的主軸空間(main size)。
瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的預設值為auto,即項目的本來大小。
它可以設為跟width或height屬性一樣的值(例如350px),則項目將佔據固定空間。

flex

flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,預設值:0 1 auto。後兩個屬性可選。
此屬性有兩個快速值:auto (1 1 auto) 和 none (0 0 auto)。

align-self

align-self屬性允許單一項目有與其他項目不一樣的對齊方式,可覆寫align-items屬性。
預設值:auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同於stretch。
此屬性可能取6個值,除了auto,其他都與align-items屬性完全一致。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

Javascript的觀察者模式

Javascript的代理模式

Javascript的策略模式

以上是flex佈局詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript數據類型:瀏覽器和nodejs之間是否有區別?JavaScript數據類型:瀏覽器和nodejs之間是否有區別?May 14, 2025 am 12:15 AM

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScript評論:使用//和 / * * / * / * /JavaScript評論:使用//和 / * * / * / * /May 13, 2025 pm 03:49 PM

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

mPDF

mPDF

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

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境