1. 程式人生 > >響應式佈局利器—我對flex佈局的理解

響應式佈局利器—我對flex佈局的理解

網頁佈局在前端開發過程中,一直佔有舉重輕重的作用。它要求我們高保真的還原UI設計師的設計稿,還要求能夠適配不同的機型裝置,原始的佈局,經常採用position、float等定位方式,這種方式在頁面開發過程中,響應式方面會顯得比較凌亂、繁瑣。而且瑣碎的css程式碼也不易維護。在css的發展過程中,逐漸出現了許多的響應式佈局方式,今天將介紹的flex佈局,就是其中一種。
flex佈局,能夠將容器,按照特定的比例進行劃分,從一維的角度,去更好的對容器進行佈局。

  • flex容器
  • flex專案

flex容器

任何元素都能作為flex容器,只要使用display:flex,進行描述,該容器就成為了一個flex容器。以前在使用過程中,我一直有一個誤區,認為只有塊級元素才能作為一個flex容器。其實行內元素也是可以稱作flex容器的。可以看到塊級元素和內聯元素使用flex佈局後,能達到一樣的效果。
這裡寫圖片描述


flex容器屬性:能夠定義在flex容器上的屬性
.flex-direction
. flex-wrap
.flex-flow
.justify-content
.align-content
.align-items

flex-direction規定容器中,flex專案的排列方式。預設情況下是沿著橫軸依次排列。
可取值為:row | row-reverse | column | column-reverse,依次展示效果如下,預設情況不做展示
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
flex-wrap當佈局的flex元素,超過當前的整體寬度時,設定該屬性,元素將另起一行重新進行排列。
可取值為:wrapper| nowrapper | wrapper-reverse | column-reverse

,依次展示如下
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
flex-flow是前面兩個屬性之合。
可取值為:row no-wrapper | row wrapper | column no-wrapper | column wrapper按這種順序依次組合。
組合結果這裡不再做展示。
justify-content描述了專案在主軸上的對齊方式,具體如何對齊,取決於當前所定義的軸的方向。
可取值為:flex-start | flex-end | center | space-between | space-around
當flex-direction為row的時候,分別對應一下的結果,可以看到end方向上,留的空白位置較多
這裡寫圖片描述

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
space-between:flex元素兩端對齊。
space-around: flex元素本身左右兩邊間距相等。
當flex值為column時,展示結果依次如下所示:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
align-items定義了元素在縱軸上的對齊方式。
可取值為:flex-start | flex-end | stretch | center | baseline這裡的結果展示大家可自己試一下。
align-content定義了元素多個軸線上的對齊方式。
可取值為:flex-start | flex-end | stretch | center | space-between | space-around

flex專案

flex專案,為包裹在flex容器下的子元素,只要父元素用display:flex定義了,這個父元素下的item就全部變成了flex專案,預設情況下,為橫向排列,寬度只相等的,展現形式類似塊級元素的dom結構。
flex專案屬性:能夠定義在flex專案上的屬性
. order
.flex-grow
.flex-shrink
.flex-basis
.flex
.align-self

order規定了flex專案,按照什麼樣的順序展示。
flex-grow規定了flex專案放大顯示的倍數。下圖展示了其他專案為1,2專案放大3倍時的展示情況,如果不設定該屬性,預設為1,即使在有剩餘空間的情況下也不會自動放大。
這裡寫圖片描述
flex-shrink規定了flex專案縮小顯示的倍數。
flex-basis規定在分配多餘空間時,自動計算的空間值。
flex為上面三個屬性的縮寫值合寫形式,後兩個引數即flex-shrink、flex-basis可以省略。一般都取為1
align-self定義了當前專案,與其他專案顯示的差別。
可取值為flex-start | flex-end | center | baseline | stretch
這裡寫圖片描述
這裡寫圖片描述

flex佈局,在實際開發過程中,是相當便捷的。而且在響應式開發中,也佔據了很重要的位置,希望本文的基本概念,能給大家帶來些收穫。

相關推薦

響應佈局利器flex佈局理解

網頁佈局在前端開發過程中,一直佔有舉重輕重的作用。它要求我們高保真的還原UI設計師的設計稿,還要求能夠適配不同的機型裝置,原始的佈局,經常採用position、float等定位方式,這種方式在頁面開發過程中,響應式方面會顯得比較凌亂、繁瑣。而且瑣碎的css程式碼

從scss入手實現響應網格(柵格化)佈局

背景:最近檢視ife/2016的響應式佈局任務時,有大神同學通過scss的方法進行實現,第一次接觸scss,感覺受益匪淺,在此記錄一下。 一、任務目的        通過使用HTML和CSS實現類似BootStrap的響應式12欄網格佈局,根據螢幕寬度,元素佔的欄數不同。

DFS的理解

多個 temp 寫代碼 col tps 深度 first 皇後 精通 我對DFS的理解 [何為DFS]   深度優先搜索(Depth-First-Search),簡稱DFS。是一種常見搜索算法。其方法是從原點不斷一條路擴散,當無路可走時回退來走下一條路,直至找到目標或遍

說說 WSGI 的理解

先說下 WSGI 的表面意思,Web Server Gateway Interface 的縮寫,即 Web 伺服器閘道器介面。 之前不知道 WSGI 意思的夥伴,看了上面的解釋後,我估計也還是不清楚,所以下面結合實際場景說明,先讓大家有個大致的認識。最後我們再自己實現一個,加深對 WSGI 的理解。 我們

封裝的理解

希望能自己獨立的寫出這個小冊。在部落格園的第一篇博文,還是寫關於技術方面的,但願語言組織好點。 自己也不算是初級小白了,畢竟學習前端知識很長一段時間了。兩個月前也嘗試寫過一些封裝,但對封裝質量並不滿意,後來讀了一本書,叫《JavaScript設計模式與開發實踐》,從中受益很多。作者是我們國內的騰訊前端工程師

vuex的理解及其用法

目的:為了非父子元件之間的資料共用。 使用方式: 一、在src資料夾下新建一個store.js檔案 二、將store.js檔案掛載到vue上:在main.js中 import store from '@/store.js',然後在new Vue中的物件中加入store

REST的理解

1:rest的由來 REST即表述性狀態傳遞(英文:Representational State Transfer,簡稱REST) 通俗點說:資源在網路中以某種表現形式進行狀態轉移。 源於REST之父 Roy Thomas Fielding 2000年

談談vuex的理解

在近期做得專案中,用到Vue框架,必不可少的也用到vuex狀態管理,再加上面試中也被問到了,索性把這一塊拿出來抽時間整理一下: 核心概念 Vuex 是適用於 Vue.js 應用的狀態管理庫,為應用中的所有元件提供集中式的狀態儲存與操作,保證了所有狀態以可預測的方式進行修改。 官網的

muduo原始碼分析--muduo的理解

分為幾個模組 EventLoop、TcpServer、Acceptor、TcpConnection、Channel等 對於EventLoop來說: 他僅僅關注裡面的主驅動力,EventLoop中僅僅關注poll,這類系統呼叫使得其成為Reactor模式,EventLo

rxjava的理解

你這個問題其實我剛開始接觸RxJava的時候也問過自己很多次。原因也是網上的教程大多淺嘗輒止,舉例不恰當,大多數全是retrofit或者隨意組合幾個操作符(這也難怪,畢竟很多App也沒什麼太複雜的業務邏輯,都是一樣的crud應用,找個Restful API 寫幾個 material介面就是一個幾百GitHu

AIDL的理解

       最近一直在研究AIDL,AIDL是為不同程序之間通訊而設計的,它使用了Binder的機制,我這裡不打算講解Binder的原理,因為我也不太清楚。其基本思想就是你的程序(可以稱之為本地端)想呼叫另外一個程序(可稱之為服務端)提供的功能,比如Add。這個時候我們必須

(一)dubbo的理解

一:什麼是dubbo? dubbo是阿里巴巴的一種開源分散式服務框架,是面向服務的,顧名思義就是提供服務。我們通常將一些專案中相同的邏輯抽離出來,封裝成通用的service,然後根據不同的邏輯功能部署到不同的伺服器上,然後我們在內網可以遠端呼叫伺服器上的service提供的

今天總結一下Fragment的理解(碎片的入棧與出棧,碎片的巢狀)

1.碎片的巢狀! getFragmentManager到的是activity對所包含fragment的Manager,而如果是fragment巢狀fragment,那麼就需要利用getChildFragmentManager()了。 getFragmentManager(

LSTM的理解(一)

org 進行 而已 我們 序列 構造 介紹 拼接 影響 作者:Tobin 日期:2019/04/12 緣起:最近在做時間序列分析的實驗,FCN網絡做時序數據分類的效果還可以,由於時間的依賴性,自然地想到是否可以利用LSTM網絡進行時序數據的分類。我對CNN比較了解,但是對

C#程式碼實現IoC(控制反轉)設計,以及IoC的理解

一. 什麼是IoC 當在A類中要使用B類的時候,我們一般都是採用new的方式來例項化B類,這樣一來這兩個類就有很強的依賴關係,不符合低耦合的設計思想。這時候我們可以通過一箇中間容器來例項化物件,需要的時候就可以通過容器獲取一個B類的物件。這種思想就是IoC(控制反轉),其實我覺得叫控制轉移更為合適,因為它是把

CSS3 - 使用彈性盒子(Flex Box)實現完美居中、柵格系統及響應佈局

CSS3彈性盒子介紹 彈性盒子是 CSS3 的一種新的佈局模式。 CSS3 彈性盒( Flexible Box 或 flexbox),是一種當頁面需要適應不同的螢幕大小以及裝置型別時確保元素擁有恰當的行為的佈局方式。 引入彈性盒佈局模型的目的是提供一種更加有效的方式來對一個容器中的子

css佈局flex響應、grid

一、常見佈局型別 表格佈局:原始佈局方式,利用表格的特性展示佈局,沒有頁面邏輯且大量冗餘程式碼,現在幾乎不用 固定寬:常用960px,移動端縮放表現差,不友好 流式:使用float實現動態浮動,各解析度下樣式無法保證 flex彈性盒子:簡潔且強大,主流使用 cs

前端之響應佈局,過度以及flex佈局

一,z-index 脫離文件流標籤,具有z-index屬性的值,可以用來控制顯示層次的優先順序,值為任意整數(值越大優先順序越高) <!DOCTYPE html> <html> <head> <meta charset="UT

簡單的flex 響應佈局

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=dev

響應佈局:CSS3彈性盒flex佈局模型

頁面佈局一直都是web應用樣式設計的重點  我們傳統的佈局方式都是基於盒模型的  利用display、position、float來佈局有一定侷限性  比如說實現自適應垂直居中  隨著響應式佈局的流行,CSS3引入了更加靈活的彈性佈局模型 flex彈性佈局 使用彈性佈