神器--Flexbox

這是一篇介紹和簡單的flex 布局的教程

Intro

Flexbox布局 是一種為了解決現代web 復雜布局的新型的css3布局方案。
印象中最深的一次了解flex布局是在css conf上,Git Cafe的工程師講的.但當時由于其還沒有得到各大瀏覽器廠商的廣泛支持,我有專注于js沒太在意這塊的東西,所以僅僅只是一個了解。
但隨著react 的革命,讓我們享受到組件化帶來的便利的同時,也帶來了js工程也需要考慮css的布局,特別是css組件化。更重要的原因還是隨著手機端的不斷普及,還有瀏覽器對對css3新特性的支持,讓我們有幸使用到了更好的布局解決方案。

瀏覽器支持情況

Why Flexbox

我們一直習慣于使用tables, floats, inline-blocks 以及其他css屬性來布局界面。
但其實這些屬性都不是為了現代復雜交互的網頁和webapp的布局而設計的。比如,簡單的垂直居中就不容易實現;復雜的flexible grid布局 實現起來更加費勁。

How

兩個重要的元素:
containeritem

flexbox

container

container 存在兩根軸 main axiscross axis.

container的屬性:

  • flex-direction [row | row-reverse | column | column-reverse] main axis的方向
  • flex-wrap [nowrap | wrap | wrap-reverse] 默認情況下,項目都排在一條線(又稱"軸線")上。flex-wrap屬性定義,如果一條軸線排不下,如何換行。
  • flex-flow [<flex-direction> || <flex-wrap>] 上面兩個的合體
  • justify-content [flex-start | flex-end | center | space-between | space-around] 對齊方式 main axis
  • align-items [flex-start | flex-end | center | baseline | stretch] 對齊方式 cross axis
  • align-content [flex-start | flex-end | center | space-between | space-around | stretch] 定義了多根軸線的對齊方式。如果項目只有一根軸線,該屬性不起作用

item

item 則沿著 main axis排布。
單個item所占的空間分別用 main sizecross size 表示。
item的屬性:

  • order [<integer>] 排列順序,默認 0.
  • flex-grow [<number>] 放大比例,默認 0,即如果存在剩余空間,也不放大.
  • flex-shrink 項目的縮小比例,默認為1,即如果空間不足,該item將縮小
  • flex-basis [<length> | auto; /* default auto */] 分配多余空間之前,項目占據的 main size, 默認auto
  • flex none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] flex-grow, flex-shrink 和 flex-basis的簡寫,默認值為0 1 auto。后兩個屬性可選。
  • align-self [auto | flex-start | flex-end | center | baseline | stretch] 讓單個item有與其他item不一樣的對齊方式,可覆蓋align-items屬性,默認值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。

預告:下面會有一篇關于《Flexbox 打造柵格布局》

歡迎關注我的專欄知乎前端雜貨鋪

參考:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • H5移動端知識點總結 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,834評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,743評論 0 6
  • 簡書的Markdown貌似不支持插入iframe,所以文章里的JSFiddle示例都改做截圖了,如果有需要可以點擊...
    kangflict閱讀 1,242評論 2 8
  • 前段時間手工紀錄了一些flexbox的要點~如圖~ 所以想把它整理成電子版,加上更詳盡的解析和說明,便于大家和自己...
    趙萱_dily閱讀 1,700評論 0 9
  • Flexbox簡介 Flexbox Layout(Flexible Box)模塊,W3C官方稱為CSS彈性盒子布局...
    _李楊閱讀 473評論 0 2

友情鏈接更多精彩內容