跟著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超過螢幕。


歡迎來到我的部落格!這裡是一個分享前端開發、貓咪寫真以及與菲律賓女友生活的文化衝擊與英文學習的個人空間。我熱愛前端技術,喜歡追求最新的網頁開發趨勢,並將這些知識分享給大家。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
這周KP分享的第三個概念是max-width,我們在甚麼狀況下會使用它。 情境:電腦版的文字太長,而缺乏可讀性。 在前面學到了對width設置百分比後,我們常會用以下的方式來設計個container,來達成內容置中,左右留白,內容佔螢幕85%(你想佔百分之幾都可以)的效果。 .contai
這周KP分享的第二個概念是相對單位(relative units) ,使用上的陷阱與原則,以及如何應用它們來做Responsive Layout。
網頁中的元素本來都是Responsive的,是因為我們做了些什麼,才讓元素變成不是Responsive
這周KP分享的第三個概念是max-width,我們在甚麼狀況下會使用它。 情境:電腦版的文字太長,而缺乏可讀性。 在前面學到了對width設置百分比後,我們常會用以下的方式來設計個container,來達成內容置中,左右留白,內容佔螢幕85%(你想佔百分之幾都可以)的效果。 .contai
這周KP分享的第二個概念是相對單位(relative units) ,使用上的陷阱與原則,以及如何應用它們來做Responsive Layout。
網頁中的元素本來都是Responsive的,是因為我們做了些什麼,才讓元素變成不是Responsive
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
在學習 CSS 的過程中,Padding 與 Margin 是兩個經常出現的名詞,但對於初學者來說,可能會有些難以理解。因此,本篇文章將解釋這兩個非常重要的 CSS 屬性。當你掌握後,便能設計出更具層次或易讀的網頁。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
JavaScript30 傳送門:https://javascript30.com/ 挑戰5透過玩弄 flex-grow 屬性來操作網頁裡的卡片效果,看別人的成果:yhabib.github.io 本次學習心得: 製造過度效果延遲的方法:transition-delay V.S
1.justify-content 用來控制主軸(水平)如何分配對齊 如果要改垂直對齊的話+上 flex-direction : column 2.align-item 他是控制子項目再交叉軸(垂直)的對齊方式 3.flex-shrink 收縮性! 當空間不足時預設會是1,等於是
CSS Box Model 是在 CSS 裡面,html 的每個元素都可被視作為一個盒子,然後可以針對這個盒子去做調整,看以下圖片: 簡單來說margin就是一個是外邊距,與外層元素的間距 Margin 用於控制元素與其周邊元素的間隔,可以設定為正數(增加與其他元素的距離)、負數(減少與其他
Thumbnail
本篇文章分享了前端工程師在 CSS Battle #166 的解題方式,藉由使用 flex 來進行排版,並提供了相關的技術總結。歡迎一起來學習或練習基礎切版的朋友們和作者互動。
Thumbnail
CSS 裡的「寬度,最大寬度,最小寬度」分別是什麼呢? ➊ width 用來設定元素的寬度,且 width 作用範圍僅在 content-box 區塊 ➋ max-width → 用來設定元素的最大寬度 ➌ min-width → 用來設定元素的最小寬度
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在這一章節中,我們介紹了 Flexbox 這個 CSS 模型及其用法,重點講解了 Flex 容器和項目的各種屬性。通過具體的示例,展示了如何使用 Flexbox 進行一維佈局設計,並且通過實踐案例,展示了多行 Flex 項目和不同對齊方式的應用。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
在學習 CSS 的過程中,Padding 與 Margin 是兩個經常出現的名詞,但對於初學者來說,可能會有些難以理解。因此,本篇文章將解釋這兩個非常重要的 CSS 屬性。當你掌握後,便能設計出更具層次或易讀的網頁。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
JavaScript30 傳送門:https://javascript30.com/ 挑戰5透過玩弄 flex-grow 屬性來操作網頁裡的卡片效果,看別人的成果:yhabib.github.io 本次學習心得: 製造過度效果延遲的方法:transition-delay V.S
1.justify-content 用來控制主軸(水平)如何分配對齊 如果要改垂直對齊的話+上 flex-direction : column 2.align-item 他是控制子項目再交叉軸(垂直)的對齊方式 3.flex-shrink 收縮性! 當空間不足時預設會是1,等於是
CSS Box Model 是在 CSS 裡面,html 的每個元素都可被視作為一個盒子,然後可以針對這個盒子去做調整,看以下圖片: 簡單來說margin就是一個是外邊距,與外層元素的間距 Margin 用於控制元素與其周邊元素的間隔,可以設定為正數(增加與其他元素的距離)、負數(減少與其他
Thumbnail
本篇文章分享了前端工程師在 CSS Battle #166 的解題方式,藉由使用 flex 來進行排版,並提供了相關的技術總結。歡迎一起來學習或練習基礎切版的朋友們和作者互動。
Thumbnail
CSS 裡的「寬度,最大寬度,最小寬度」分別是什麼呢? ➊ width 用來設定元素的寬度,且 width 作用範圍僅在 content-box 區塊 ➋ max-width → 用來設定元素的最大寬度 ➌ min-width → 用來設定元素的最小寬度