跟著KP用21天征服Responsive Layout-W2-Flexbox基礎-flex-item的伸縮

更新於 發佈於 閱讀時間約 7 分鐘

歡迎來到第二周,這一周我們就要進入Flexbox了。今天我們會先認識Flexbox的起手式與flex-item的伸縮規則。

flex起手式

1.html的架構:

  • 有個div(這裡叫row,但其實來當flex-container ,包裹住flex item
  • flex-container中的第一層,就是flex-item
<div class="row">    <!--- flex container--->
<div class="col">1</div> <!--- flex item--->
<div class="col">2</div> <!--- flex item--->
<div class="col">3</div> <!--- flex item--->
</div>


補充:flex-item中元素就不是flex item了

2.css設置:對row設display:flex,row就變成了flex-container

.row{
display:flex;
}

沒錯 ,就是這麼簡單!!

那我來看一下使用flexbox前後的變化瞜

Before

raw-image


AFter

raw-image


  • col在使用前,是div,display是block。所以會占滿整行空間。
  • 在使用flex,col變成flex-item後,col不再佔滿整行,而是縮小成其最小的寬度(文字的大小),堆疊在同一行中。


為什麼row加上display:flex之後,col就會堆積在同一行呢?

flex-container的flex-direction預設是row。flex-container是一個一行的橫向的容器,裡面的item水平堆疊在同一行。

.row{
display:flex;
flex-direction:row; /*default*/

}

在上面的例子,我們看到了flex-item的寬度為其內容物的大小。這是因為item的寬度很小。

那麼讓我們來看第二個案例-item內容度長度大於container的寬度


案例-2:item內容度長度大於container的寬度

在col中插入許多的文字,其長度大於container寬度

<div class="row">  
<div class="col">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Recusandae, exercitationem doloremque tempore non ullam necessitatibus aspernatur maxime quos at facilis itaque nisi animi deserunt autem delectus fugit excepturi perspiciatis inventore!</div>
<div class="col">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Recusandae, exercitationem doloremque tempore non ullam necessitatibus aspernatur maxime quos at facilis itaque nisi animi deserunt autem delectus fugit excepturi perspiciatis inventore!</div>
<div class="col">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Recusandae, exercitationem doloremque tempore non ullam necessitatibus aspernatur maxime quos at facilis itaque nisi animi deserunt autem delectus fugit excepturi perspiciatis inventore! </div>
</div>
raw-image


接著,一樣對row加上flex,讓它變成flex-container

.row{   display:flex; }
raw-image


這時候的結果是三個item縮小成三個等比例,整整齊齊一起排在一行中。

這真的太神奇了!! 到底發生了什麼事?

1.item的內容物都很長,長度長於container的寬度。也就是說內容物會傾向於伸展到100%的width。

2.但是container中有三個item,他們都想延伸至100%。

3.所以item必須進行縮放,由於item中的內容長度一樣(其實內容都一樣),container的空間width:100% 去平分成三等份,每個item的width為33.33%。

item縮放的原理

由以上的兩個案例可以觀察flex-item縮放的原理,會受到item的內容長度、items的總寬度、container的寬度影響。

1.如果item的內容長度不長,總寬度不超過container的寬度。那麼就不會有縮放的問題。item都維持內容大小的原始寬度。

2.如果items的總寬度超過container的寬度,那麼item就要進行縮放

3.按照個別item的內容長度,按比例去縮放item的width,分配container的width:100%。

ex:A的長度與B的長度為2:3,兩者的總長度大於container的寬度。那A與B就會按照2:3的比例去均分container的寬度,A的width為40%,B的width為60%

item縮放的極限

上面有提到,flex-container是個一行的橫向容器。也就是說裡面的item都會縮放堆疊在一行之中。不過item在怎麼壓縮,都會它的最小寬度。如果以文字來說,就是一個字的寬度。

這裡我們來看個例子

raw-image


item已經壓縮到了最小寬度-文字中最長的單字exercitationem的長度。

如果再壓縮的話,container的內容就會超出畫面,出現水平卷軸(scrollbar)

raw-image

Recap

1.flex的起手式要準備要當flex-container與flex-item的html結構。flex-container包裹者flex-item

2.預設的flex-container是一行,所有的item都會縮放在一行

3.flex-item的寬度是其內容物的長度。

4.如果item的總寬度沒有超過container,那就沒有縮放的問題。

5.如果item的總寬度超過container,那item就會按照比例伸縮。

6.item縮小是有極限的,如果銀幕小於最小值,container的內容就會超過container超過螢幕。


留言
avatar-img
留言分享你的想法!
avatar-img
Shang的 前端開發筆記
3會員
13內容數
歡迎來到我的部落格!這裡是一個分享前端開發、貓咪寫真以及與菲律賓女友生活的文化衝擊與英文學習的個人空間。我熱愛前端技術,喜歡追求最新的網頁開發趨勢,並將這些知識分享給大家。
2024/03/21
CatHelper是我開發的前端 SideProject,是貓咪募資收養的一站式平台。 我用戶使用流程、資料庫、頁面來構思這個專案。
Thumbnail
2024/03/21
CatHelper是我開發的前端 SideProject,是貓咪募資收養的一站式平台。 我用戶使用流程、資料庫、頁面來構思這個專案。
Thumbnail
2024/03/14
不同的運算子一起出現時,會根據其優先性(Precedence)來決定誰先誰後。MDN也很貼心的整理成表格了。 雖然有表格可以供我們查找,但是總不可能每一次用到運算子的時候,我們都去查找吧?我們最好對這張表有直觀上的理解與記憶。 那麼就讓我來分享我如何理解與記憶這張表吧! 運算子在做甚麼
Thumbnail
2024/03/14
不同的運算子一起出現時,會根據其優先性(Precedence)來決定誰先誰後。MDN也很貼心的整理成表格了。 雖然有表格可以供我們查找,但是總不可能每一次用到運算子的時候,我們都去查找吧?我們最好對這張表有直觀上的理解與記憶。 那麼就讓我來分享我如何理解與記憶這張表吧! 運算子在做甚麼
Thumbnail
2024/02/08
當前大多數網站不再是靜態網站,需要向後端的 Server 請求資料。而且,這些資料的請求通常是非同步進行的。在React中,目前被視為最佳實踐的方式是使用 useEffect。
2024/02/08
當前大多數網站不再是靜態網站,需要向後端的 Server 請求資料。而且,這些資料的請求通常是非同步進行的。在React中,目前被視為最佳實踐的方式是使用 useEffect。
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
在學習 CSS 的過程中,Padding 與 Margin 是兩個經常出現的名詞,但對於初學者來說,可能會有些難以理解。因此,本篇文章將解釋這兩個非常重要的 CSS 屬性。當你掌握後,便能設計出更具層次或易讀的網頁。
Thumbnail
在學習 CSS 的過程中,Padding 與 Margin 是兩個經常出現的名詞,但對於初學者來說,可能會有些難以理解。因此,本篇文章將解釋這兩個非常重要的 CSS 屬性。當你掌握後,便能設計出更具層次或易讀的網頁。
Thumbnail
CSS 裡的「寬度,最大寬度,最小寬度」分別是什麼呢? ➊ width 用來設定元素的寬度,且 width 作用範圍僅在 content-box 區塊 ➋ max-width → 用來設定元素的最大寬度 ➌ min-width → 用來設定元素的最小寬度
Thumbnail
CSS 裡的「寬度,最大寬度,最小寬度」分別是什麼呢? ➊ width 用來設定元素的寬度,且 width 作用範圍僅在 content-box 區塊 ➋ max-width → 用來設定元素的最大寬度 ➌ min-width → 用來設定元素的最小寬度
Thumbnail
當拿到資料時,發現所有的資料全部都擠在同一個儲存格內,在進行資料整理與分析時,最害怕就是遇到這樣的情況,該如何將塞在裡面的資料把它整理成右邊呢? 其實如果資料是有很明確的規律,都是可以解決的。 可以觀察到每一種服裝與數字中間都有一個空格,而且不同服裝之間都是用逗號個開,得到這樣的規律其實問題就已
Thumbnail
當拿到資料時,發現所有的資料全部都擠在同一個儲存格內,在進行資料整理與分析時,最害怕就是遇到這樣的情況,該如何將塞在裡面的資料把它整理成右邊呢? 其實如果資料是有很明確的規律,都是可以解決的。 可以觀察到每一種服裝與數字中間都有一個空格,而且不同服裝之間都是用逗號個開,得到這樣的規律其實問題就已
Thumbnail
在上一篇文章-跟著KP用21天征服Responsive Layout-W2-Flexbox基礎-flex-item的伸縮 。我們提到了flex-item的width會由自身的內容長度決定。這其實是件很不可控的事情,所以我們在開發上會傾向於對flex-item設置width。 flex-item
Thumbnail
在上一篇文章-跟著KP用21天征服Responsive Layout-W2-Flexbox基礎-flex-item的伸縮 。我們提到了flex-item的width會由自身的內容長度決定。這其實是件很不可控的事情,所以我們在開發上會傾向於對flex-item設置width。 flex-item
Thumbnail
歡迎來到第二周,這一周我們就要進入Flexbox了。今天我們會先認識Flexbox的起手式與flex-item的伸縮規則。
Thumbnail
歡迎來到第二周,這一周我們就要進入Flexbox了。今天我們會先認識Flexbox的起手式與flex-item的伸縮規則。
Thumbnail
這周KP分享的第二個概念是相對單位(relative units) ,使用上的陷阱與原則,以及如何應用它們來做Responsive Layout。
Thumbnail
這周KP分享的第二個概念是相對單位(relative units) ,使用上的陷阱與原則,以及如何應用它們來做Responsive Layout。
Thumbnail
「px」,即像素,是最基本的單位,它常被用於指定字體大小、邊框粗細等。「em」和「rem」通常用於調整相對大小,「em」在子元素中的適用,而「rem」則以根元素為參考。另一方面,「vh」和「vw」分別代表視窗的高度和寬度百分比,特別適合實現響應式設計。「vmin」和「vmax」則根據視窗的最小或最大
Thumbnail
「px」,即像素,是最基本的單位,它常被用於指定字體大小、邊框粗細等。「em」和「rem」通常用於調整相對大小,「em」在子元素中的適用,而「rem」則以根元素為參考。另一方面,「vh」和「vw」分別代表視窗的高度和寬度百分比,特別適合實現響應式設計。「vmin」和「vmax」則根據視窗的最小或最大
Thumbnail
網頁中經常會出現正方形的設計,在切版時如果直接設定固定寬高就是破版的節奏,但單用百分比設定長寬,RWD 時還是會變得不夠正,這邊提供兩個方法:
Thumbnail
網頁中經常會出現正方形的設計,在切版時如果直接設定固定寬高就是破版的節奏,但單用百分比設定長寬,RWD 時還是會變得不夠正,這邊提供兩個方法:
Thumbnail
css display grid可以達到類似table span的排版效果,但還是有些差異,table的span其實是合併,css grid比較像是要佔幾格的意思。 如下程式碼為例,colspan是要往右合併的意思,因此會少一個td。 E css grid colspan sample code:
Thumbnail
css display grid可以達到類似table span的排版效果,但還是有些差異,table的span其實是合併,css grid比較像是要佔幾格的意思。 如下程式碼為例,colspan是要往右合併的意思,因此會少一個td。 E css grid colspan sample code:
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News