css布局之flex布局(加計算問題)

2021-10-02 21:06:37 字數 3000 閱讀 9444

基礎概念

採用flex布局的元素,稱為flex容器。它的所有子元素自動成為容器成員。容器存在兩根主軸:水平軸(主軸)與垂直軸(側軸、交叉軸)。預設沿主軸排列。

給元素設定display: felx,容器就變成了了flex布局。

容器屬性

容器flex布局之後,可設定下面這些屬性:

(1)flex-direction:決定主軸的方向。有四個值可選

(2) flex-wrap: 預設情況下,子元素都排在一條軸線上。使用這個屬性,可以決定當軸線上排不下是否換行

(3) flex-flow: 該屬性是 flex-direction與flex-wrap的簡寫

可以這樣寫:flex-flow: row nowrap

(4) justify-content: 定義子元素在主軸上的對齊方式

注意:這些屬性都是相對主軸方向而言的

(5) align-items: 定義子元素在側軸上的對齊方式

(6) align-content: 定義多根軸線的對齊方式。(當子容器多行排列時,設定行與行之間的對齊方式。)

子元素的屬性

(1) order: 定義專案的排列順序,數字越小的,排列越在前

例如: order:1
(2) flex-grow: 屬性定義專案的放大比例,預設為0

如果所有子元素flex-grow屬性都為1,將等分剩餘空間。定義為其他值,則按比例分配剩餘空間

(3) flex-shrink: 定義元素的縮小比例,預設為1

如果所有專案都設定:flex-shrink:1當空間不足時,都將等比例縮小。如果乙個專案的flex-shrink屬性為0,其他專案都為1,則空間不足時,前者不縮小。

注意:負值對該屬性無效

(4) flex-basis: 定義了在分配多餘空間之前,元素佔據的主軸空間。預設值atuo,即元素本身的大小

比如定義基本值為50,那麼給元素將佔據固定的空間。

(5) flex屬性時:flex-grow、flex-shrink、flex-basis的簡寫,預設值為 0、1、atuo

(6) align-self: 執行某個元素與其他元素有不一樣的對齊方式。

該屬性可以覆蓋父級的align-items屬性。預設值auto,表示繼承父元素的align-items屬性

屬性值: auto | flex-start | flex-end | center | baseline | stretch;

子元素flex屬性計算問題

下列布局在頁面上的寬度比是多少?

.flex 

.left

.right

// html

="flex"

>

="left"

>

<

/div>

="right"

>

<

/div>

<

/div>

解析: 本題考查flex計算規則

屬性值:

flex-grow: 定義專案的放大比例,預設為0

flex-shrink: 定義專案的縮小比例,預設為1

flex-basis: 定義了在分配多餘空間之前,專案佔據的主軸空間(main size),預設為auto

flex: 是flex-grow,flex-shrink和flex-basis的簡寫

<

!doctype html>

"en"

>

"utf-8"

>

test<

/title>

.container

.first

.second

.third

<

/style>

<

/head>

='container'

>

='first'

>

<

/div>

='second'

>

<

/div>

='third'

>

<

/div>

<

/div>

<

/body>

<

/html>

上面**, 父容器定義寬度200px,因為flex-basis可替代width屬性的。所以,子盒子寬度為 (200+40+40)= 280px,溢位了80px。

首先計算加上權重的值:1*40 + 3 * 200 + 2 * 40 = 720 px

.first 需要縮小的值:(40

*1/720)*

80=4.44px

.second 需要縮小的值:

(200*3

/720)*

80=66.67px

.first 需要縮小的值:(40

*2/720)*

80=8.89px

回到本題:left與right盒子基準值為50px、100px。父盒子的寬度剩餘50px,剩下的50px 按照flex-grow的值來分配,這裡left盒子為50+50*3/5 = 80px, right盒子為100+50*2/5px =120px所以最終為80px: 120px = 2 : 3

css布局之flex布局

網頁布局 layout 是css的乙個重點應用。布局的傳統解決方案,基於盒狀模型,依賴 display屬性 position屬性 float屬性。它對於那些特殊布局非常不方便,比如,垂直居中就不容易實現。2009年,w3c提出了一種新的方案 flex布局,可以簡便 完整 響應式地實現各種頁面布局。目...

css布局之彈性布局flex

作用 彈性布局flex能按照我們的設定自動計算各子元素之間的間距並將之布局好,而不需要像定位那樣手動計算布局。彈性布局是定義在乙個父容器中,加上display flex樣式使父容器的布局方式成為彈性布局。父容器中的子元素都會成為行內塊,預設所有子元素橫向排列,子元素的float clear和vert...

預設布局換行 css 之Flex布局

一 flex 布局是什麼?flex 是 flexible box 的縮寫,意為 彈性布局 用來為盒狀模型提供最大的靈活性。任何乙個容器都可以指定為 flex 布局。box 行內元素也可以使用 flex 布局 box 其中webpick伺服器前邊必須加上 webpick 注意,設為 flex 布局以後...