搜尋
首頁web前端css教學flex-shrink如何計算? flex-shrink的計算方法介紹

這篇文章帶給大家的內容是關於flex-shrink如何計算? flex-shrink的計算方法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

先回顧flex-grow

假設有一個div內包含三個子 div1,div2, div3,寬度分別200px.
對於flex-grow對於剩餘空間分配比例的計算相信用過flex佈局的都非常熟悉了。這裡還是簡單列一下計算公式:
假設div1, div2, div3的flex-grow分別設定為1,2,3. 現在假定外層div的寬度是800px, 那麼剩下的800px - 3*200px = 200px如何分配給三個子div呢?
三個div額外分配的空間如下:

div1:1 / (1 2 3)  200px = 1/6  200px

div2:2 / (1 2 3)  200px = 2/6  200px

div3:3 / (1 2 3)  200px = 3/6  200px

flex-shrink如何計算? flex-shrink的計算方法介紹

#重點來了,flex-shink到底是如何計算的呢?

flex-shink屬性主要是在外層div寬度不夠的情況下,子div收縮一定的空間來抵消不夠的那部分寬度。
舉個栗子,現在三個子div的寬度是600px, 但是我給外層div的寬度設定成500px, 那麼不夠顯示的600-500 px應該怎麼讓子div們收縮掉這100px。這時候flex-shrink就派上用場了,那要具體要怎麼計算呢?
有人說這個屬性跟flex-grow類似,計算方式也差不多吧(其實是有差異的)。但具體怎麼算,很多人都說不清,包括一個MDN, W3CShcool也沒給具體公式。另外,我發現很多按讚數很多的文章,給出的計算公式是錯的。這也是為什麼我想要寫這邊的文章。

好了,不賣關子,來說說怎麼計算收縮空間吧!
先貼出範例的程式碼:
html部分:

<div>
    <div>1</div>
    <div>2</div>
    <div>3</div>
</div>

css部分:

.outer {
  width: 500px;
  display: flex;
}
.outer div {
  height: 80px;
}

.div1 {
  flex: 1 1 100px;
  background: red;
}
.div2 {
  flex: 1 2 200px;
  background: yellow;
}
.div3 {
  flex: 1 3 300px;
  background: green;
}

先計算總權重TW = 100px  1(flex-shrink) 200px 2(flex -shrink) 300px *3(flex-shrink) = 1400px
也就是每個div的寬度乘以flex-shrink係數的總和。

每個div收縮的空間為:div的寬度 flex-shrink係數/ 總權重TW  需要縮小的總寬度(在我們的例子中是600px - 500px = 100px)

所以各div最後的寬度計算公式如下:

div1最后的宽度 = 100px - 100*1/1400 * 100px = 92.86px

div2最后的宽度 = 200px - 200*2/1400 * 100px = 171.42px

div3最后的宽度 = 300px - 300*3/1400 * 100px = 235.72px

demo位址:https://jsfiddle.net/lingzhen...

#截圖如下:

flex-shrink如何計算? flex-shrink的計算方法介紹

##Tips: 看見別人的文章的一些公式時,一定不要偷懶,自己寫個例子驗證一下,不然明明被誤導了,卻還給點讚了收藏了。畢竟實踐出真知!

BTW: 這個屬性相對flex-grow來說確實用的很少,所以很多人都沒研究過它具體到底是怎麼算的。


以上是flex-shrink如何計算? flex-shrink的計算方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:segmentfault思否。如有侵權,請聯絡admin@php.cn刪除
迭代使用樣式組件的React設計迭代使用樣式組件的React設計Apr 21, 2025 am 11:29 AM

在一個完美的世界中,我們的項目將擁有無限的資源和時間。我們的團隊將開始使用經過深思熟慮的UX設計進行編碼。

哦,製作三角形麵包絲帶的許多方法!哦,製作三角形麵包絲帶的許多方法!Apr 21, 2025 am 11:26 AM

哦,製作三角形麵包屑絲帶的許多方法

CSS指南中的SVG屬性CSS指南中的SVG屬性Apr 21, 2025 am 11:21 AM

SVG具有自己的一套元素,屬性和屬性集,以至於內聯SVG代碼可能會變得漫長而復雜。通過利用CSS和SVG 2規範的一些即將到來的功能,我們可以減少該代碼以進行清潔標記。

交叉觀察者的一些功能用途可以知道何時在元素中查看交叉觀察者的一些功能用途可以知道何時在元素中查看Apr 21, 2025 am 11:19 AM

您可能不知道這一點,但是JavaScript最近偷偷地積累了許多觀察者,而交叉觀察者是其中的一部分

恢復偏愛減少運動恢復偏愛減少運動Apr 21, 2025 am 11:18 AM

我們可能不需要扔掉所有CSS動畫。請記住,這更喜歡減少動作,而不喜歡不運動。

如何將進步的Web應用程序進入Google Play商店如何將進步的Web應用程序進入Google Play商店Apr 21, 2025 am 11:10 AM

PWA(Progressive Web應用程序)已經與我們在一起了一段時間。但是,每次我嘗試向客戶解釋它時,同樣的問題都會出現:“我的用戶會成為

處理HTML的最簡單方法包括處理HTML的最簡單方法包括Apr 21, 2025 am 11:09 AM

這對我來說非常令人驚訝,HTML從未在其中包含其他HTML文件。似乎也沒有任何東西

更改懸停在懸停的SVG的顏色更改懸停在懸停的SVG的顏色Apr 21, 2025 am 11:04 AM

使用SVG有很多不同的方法。取決於哪種方式,在不同狀態或條件下重新定制該SVG的策略 - 懸停,

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中