Flex 布局教程:語法篇

網頁布局(layout)是CSS的一個重點應用。

布局的傳統解決方案,基于盒狀模型,依賴?display屬性 +?position屬性 +?float屬性。它對于那些特殊布局非常不方便,比如,垂直居中就不容易實現。

2009年,W3C提出了一種新的方案----Flex布局,可以簡便、完整、響應式地實現各種頁面布局。目前,它已經得到了所有瀏覽器的支持,這意味著,現在就能很安全地使用這項功能。

Flex布局將成為未來布局的首選方案。本文介紹它的語法,下一篇文章給出常見布局的Flex寫法。

以下內容主要參考了下面兩篇文章:A Complete Guide to Flexbox?和?A Visual Guide to CSS3 Flexbox Properties。

一、Flex布局是什么?

Flex是Flexible Box的縮寫,意為"彈性布局",用來為盒狀模型提供最大的靈活性。

任何一個容器都可以指定為Flex布局。


.box{display: flex; } 

行內元素也可以使用Flex布局。


.box{display: inline-flex; } 

Webkit內核的瀏覽器,必須加上-webkit前綴。


.box{display: -webkit-flex; /* Safari */ display: flex; } 

注意,設為Flex布局以后,子元素的floatclearvertical-align屬性將失效。

二、基本概念

采用Flex布局的元素,稱為Flex容器(flex container),簡稱"容器"。它的所有子元素自動成為容器成員,稱為Flex項目(flex item),簡稱"項目"。

容器默認存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點)叫做main start,結束位置叫做main end;交叉軸的開始位置叫做cross start,結束位置叫做cross end

項目默認沿主軸排列。單個項目占據的主軸空間叫做main size,占據的交叉軸空間叫做cross size

三、容器的屬性

以下6個屬性設置在容器上。

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

3.1 flex-direction屬性

flex-direction屬性決定主軸的方向(即項目的排列方向)。


.box {flex-direction: row | row-reverse | column | column-reverse; } 

它可能有4個值。

  • row(默認值):主軸為水平方向,起點在左端。
  • row-reverse:主軸為水平方向,起點在右端。
  • column:主軸為垂直方向,起點在上沿。
  • column-reverse:主軸為垂直方向,起點在下沿。

3.2 flex-wrap屬性

默認情況下,項目都排在一條線(又稱"軸線")上。flex-wrap屬性定義,如果一條軸線排不下,如何換行。


.box{flex-wrap: nowrap | wrap | wrap-reverse; } 

它可能取三個值。

(1)nowrap(默認):不換行。

(2)wrap:換行,第一行在上方。

(3)wrap-reverse:換行,第一行在下方。

3.3 flex-flow

flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,默認值為row nowrap


.box {flex-flow: <flex-direction> || <flex-wrap>; } 

3.4 justify-content屬性

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


.box {justify-content: flex-start | flex-end | center | space-between | space-around; } 

它可能取5個值,具體對齊方式與軸的方向有關。下面假設主軸為從左到右。

  • flex-start(默認值):左對齊
  • flex-end:右對齊
  • center: 居中
  • space-between:兩端對齊,項目之間的間隔都相等。
  • space-around:每個項目兩側的間隔相等。所以,項目之間的間隔比項目與邊框的間隔大一倍。

3.5 align-items屬性

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


.box {align-items: flex-start | flex-end | center | baseline | stretch; } 

它可能取5個值。具體的對齊方式與交叉軸的方向有關,下面假設交叉軸從上到下。

  • flex-start:交叉軸的起點對齊。
  • flex-end:交叉軸的終點對齊。
  • center:交叉軸的中點對齊。
  • baseline: 項目的第一行文字的基線對齊。
  • stretch(默認值):如果項目未設置高度或設為auto,將占滿整個容器的高度。

3.6 align-content屬性

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


.box {align-content: flex-start | flex-end | center | space-between | space-around | stretch; } 

該屬性可能取6個值。

  • flex-start:與交叉軸的起點對齊。
  • flex-end:與交叉軸的終點對齊。
  • center:與交叉軸的中點對齊。
  • space-between:與交叉軸兩端對齊,軸線之間的間隔平均分布。
  • space-around:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
  • stretch(默認值):軸線占滿整個交叉軸。

四、項目的屬性

以下6個屬性設置在項目上。

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

4.1 order屬性

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


.item {order: <integer>; } 

4.2 flex-grow屬性

flex-grow屬性定義項目的放大比例,默認為0,即如果存在剩余空間,也不放大。


.item {flex-grow: <number>; /* default 0 */ } 

如果所有項目的flex-grow屬性都為1,則它們將等分剩余空間(如果有的話)。如果一個項目的flex-grow屬性為2,其他項目都為1,則前者占據的剩余空間將比其他項多一倍。

4.3 flex-shrink屬性

flex-shrink屬性定義了項目的縮小比例,默認為1,即如果空間不足,該項目將縮小。


.item {flex-shrink: <number>; /* default 1 */ } 

如果所有項目的flex-shrink屬性都為1,當空間不足時,都將等比例縮小。如果一個項目的flex-shrink屬性為0,其他項目都為1,則空間不足時,前者不縮小。

負值對該屬性無效。

4.4 flex-basis屬性

flex-basis屬性定義了在分配多余空間之前,項目占據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多余空間。它的默認值為auto,即項目的本來大小。


.item {flex-basis: <length> | auto; /* default auto */ } 

它可以設為跟widthheight屬性一樣的值(比如350px),則項目將占據固定空間。

4.5 flex屬性

flex屬性是flex-grow,?flex-shrink?和?flex-basis的簡寫,默認值為0 1 auto。后兩個屬性可選。


.item {flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] } 

該屬性有兩個快捷值:auto?(1 1 auto) 和 none (0 0 auto)。

建議優先使用這個屬性,而不是單獨寫三個分離的屬性,因為瀏覽器會推算相關值。

4.6 align-self屬性

align-self屬性允許單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性。默認值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch


.item {align-self: auto | flex-start | flex-end | center | baseline | stretch; } 

該屬性可能取6個值,除了auto,其他都與align-items屬性完全一致。

(完

轉載于:https://www.cnblogs.com/susanws/p/5389968.html

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

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

相關文章

練習錯誤

form:阻止表單提交的方法一&#xff1a;在form標簽中給出以下代碼&#xff1a; 1 onsubmit "return False" 方法二&#xff1a;設置事件阻止 1 e.preventDefault() js中判斷&#xff1a;只要非數字都應該表示為字符串 1 if(Email.indexOf("") -1){ 2 …

JavaFX 2中的PopupMenu

創建彈出菜單 要在JavaFX中創建Popupmenu&#xff0c;可以使用ContextMenu類。 您向其中添加MenuItems&#xff0c;也可以使用SeparatorMenuItem創建可視分隔符。 在下面的示例中&#xff0c;我選擇子類ContextMenu并將MenuItems添加到其構造函數中。 public class Animatio…

matlab中CH指標聚類評價指標,MATLAB聚類有效性評價指標(外部)

MATLAB聚類有效性評價指標(外部)作者&#xff1a;凱魯嘎吉 - 博客園 http://www.cnblogs.com/kailugaji/更多內容&#xff0c;請看標簽&#xff1a;MATLAB、聚類前提&#xff1a;數據的真實標簽已知&#xff01;1. 歸一化互信息(Normalized Mutual information)定義程序functio…

學習進度表

周數 專業學習目標 專業學習時/每分鐘 新增代碼量 知識技能總結 第六周 ps的圖像處理 80 30 看書加以實踐 第七周 數據結構的鏈式結構 100 50 多做習題加以鞏固知識 第八周 網頁設計 80 30 多多練習&#xff0c;學會用代碼設計 第九周 圖片美工 70 30 慢慢學會運用軟…

Axis通過wsdd部署Web Service

axis網上的教程很多&#xff0c;不過搜來搜去&#xff0c;總是只有那么幾篇。仔細看了一下那幾篇文章&#xff0c;都感覺到不是自己想要的&#xff0c;所以自己整理了一篇分享一下。 本文介紹axis應用的一個小例子&#xff0c;沒有麻煩的命令行操作&#xff0c;只需照下面的步驟…

彈簧特性

1.概述 本教程將展示如何通過XML或Java配置在Spring中設置和使用屬性 。 在Spring 3.1之前 &#xff0c;將新的屬性文件添加到Spring并使用屬性值并不像它那樣靈活和健壯。 從Spring 3.1開始 &#xff0c;新的Environment和PropertySource抽象大大簡化了此過程。 2.通過XML名…

php-cgi cpu很高,php-cgi占用cpu資源過高的解決方法

轉的網上的&#xff0c;不過對PHP-CGI菜鳥的人&#xff0c;還是有點幫助的。1. 一些php的擴展與php版本兼容存在問題&#xff0c;實踐證明 eAccelerater與某些php版本兼容存在問題&#xff0c;具體表現時啟動php-cgi進程后&#xff0c;運行10多分鐘&#xff0c;奇慢無比&#x…

《做中學》讀后有感

《做中學》讀后有感 最近讀了婁老師的“做中學”系列文章&#xff0c;有很大感觸&#xff0c;今天想著重談一談我在學習方面收到的啟發。 如何成功get一項技能 如果問到“如何開始get一項技能”&#xff0c;我想我們應該是最有發言權的一代。從小就被爸爸媽媽引導著參加各種課外…

多表之間關聯查詢

內連接 jion on 自連接 本表進行內連接的查詢形式 外鏈接&#xff1a; 左鏈接 寫法&#xff1a;select 字段 from 表1 t left join 表2 s on t.字段1 s.字段1 where 條件 或者 作用&#xff1a;保證左邊的表的數據全部顯示&#xff0c;包括空的 右鏈接 寫法 &#xff1a;sele…

php文件夾0777,PHP代碼mkdir(‘images’,’0777′)創建一個具有411權限的文件夾!為什么?...

我發誓這是昨天的工作.然而,現在下面的代碼破壞文件夾沒有問題,但創建一個具有411權限的新文件夾應該是777.我的代碼昨天這樣做.這樣做的目的是壓縮文件夾,傳遞文件夾,刪除圖像,然后為圖像創建新目錄.有人能告訴我我做錯了什么或我應該做什么&#xff1f;謝謝function delete_d…

調查HashDoS問題

近一個月前&#xff0c;我就如何在不與供應商互動的情況下臨時解決 28C3上出現的HashDoS問題或其他代碼缺陷發表了一些想法。 現在是時候更深入地研究復雜性攻擊并查看來源了。 我完全假設java.util.HashMap和java.util.Hashtable是受此攻擊影響的最常用的Java數據結構&#xf…

Linq 和 EF Contains示例

List<int> unitIDListnew List<int>(); //此處添加int元素 var query DB.ElecConsumers.Where(c > unitIDList.Contains(c.ParentUnitID)); //EF方式 var query1 (from c in DB.ElecConsumers where unitIDList.Contains(c.ParentUnitID ) select c); //Linq方…

date 顯示或設置系統時間和日期

顯示或設置系統時間和日期 date [options] [format] date [options] [new date] date用來顯示系統的時間和日期&#xff0c;超級用戶可以使用date來更改系統時鐘 選項 %H 小時&#xff0c;24小時制&#xff08;00~23&#xff09; %I 小時&#xff0c;12小時制&#xff…

Java 7:WatchService

在Java 7的所有新功能中&#xff0c;更有趣的是WatchService&#xff0c;它增加了監視目錄更改的功能。 WatchService直接映射到本機文件事件通知機制&#xff08;如果有&#xff09;。 如果本機事件通知機制不可用&#xff0c;則默認實現將使用輪詢。 結果&#xff0c;響應性&…

做一件事情的3個關鍵指標:興趣、能力和回報

最近突然有了一點新的感悟&#xff0c;在原有的認識基礎之上。關于找工作&#xff0c;大家說的最多的&#xff0c;根據自己的“興趣”和“能力”。我覺得這是不夠的&#xff0c;還應該加上一個“回報”。興趣&#xff1a;對一件事有沒有愿望去嘗試&#xff0c;側重“好奇心”。…

iOS應用內支付(IAP)詳解

在iOS開發中如果涉及到虛擬物品的購買&#xff0c;就需要使用IAP服務&#xff0c;我們今天來看看如何實現。 在實現代碼之前我們先做一些準備工作&#xff0c;一步步來看。 1、IAP流程 IAP流程分為兩種&#xff0c;一種是直接使用Apple的服務器進行購買和驗證&#xff0c;另一種…

vagrant box php,vagrant box php開發環境配置 -- nginx

centos7.3 直接用yum安裝nginx的版本是1.10.2&#xff0c;當前的最新穩定版是1.10.3&#xff0c;暫時不更新&#xff0c;直接安裝yum安裝nginxsudo yum install -y nginx測試nginx -t啟動sudo service nginx startps -ef|grep nginxcurl -i localhost在virtualbox設置網絡的端口…

使用ASM 4處理Java類文件–第二部分:Tree API

什么是ASM樹API&#xff1a; ASM樹API是ASM的一部分&#xff0c;可讓您創建/修改內存中的類。 該類被視為信息樹。 像整個類一樣&#xff0c;它是ClassNode的實例&#xff0c;其中包含FieldNode對象列表&#xff0c;MethodNode對象列表等。本文假設讀者已經在這里閱讀了第一部分…

php 去除 html 屬性,用PHP 去掉所有html標簽里的部分屬性

用PHP 去掉所有html標簽里的部分屬性http://zhidao.baidu.com/question/418471924.html用PHP 去掉所有html標簽里的部分屬性 tppabsset_time_limit(0);function view_dir($dir){$dpopendir($dir); //打開目錄句柄//echo "".$dir."";$path2;while ($file r…

在Windows上安裝Elasticsearch 5.0

在windows上安裝Elasticsearch Elasticsearch可以使用.zip軟件包安裝在Windows上。 elasticsearch-service.bat命令&#xff0c;它將設置Elasticsearch作為服務運行。 Elasticsearch的最新穩定版在Download Elasticsearch下載&#xff0c;其他的版本在Past Releases page下載。…