理解CSS3 max/min-content及fit-content等width值
生活随笔
收集整理的這篇文章主要介紹了
理解CSS3 max/min-content及fit-content等width值
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. CSS2.1的尺寸體系
在CSS2.1的世界中,常見的尺寸分為這幾類:
2.1 充分利用可用空間。例如,一些div元素默認(rèn)寬度100%父元素,這種充分利用可用空間的行為就稱為“fill-available”。
2.2 收縮與包裹。典型代表就是浮動(dòng),絕對(duì)定位以及inline-block,英文稱為“shrink-to-fit”,直譯為“收縮到合適”,這種直譯往往都是不準(zhǔn)確的,這種行為表現(xiàn)確實(shí)很難描述,有些只可意會(huì)不能言傳的感覺,而我自己一直以“包裹性”作為理解。在CSS3中有個(gè)專有的關(guān)鍵名稱,fit-content
2.3 收縮到最小。這個(gè)基本上就出現(xiàn)在table-layout為auto的表格中,想必有經(jīng)驗(yàn)的小伙伴一定見過下面這樣一柱擎天的盛況的吧!
大家空間都不夠的時(shí)候,文字能斷的就斷,中文是隨便斷的,英文單詞不能斷。于是乎,第一列被無情地每個(gè)字都斷掉,形成一柱擎天。這種行為稱之為“preferred minimum width”或者“minimum content width”,也就是本文的重點(diǎn)角色之一min-content,換了一個(gè)更加規(guī)范好聽的名字了。
2.4 超出容器限制 上面1~3情況,除非有明確的width相關(guān)設(shè)置,否則尺寸都不會(huì)主動(dòng)超過容器寬度的,但是,存在一些特殊情況,例如,連續(xù)的英文數(shù)字,好長(zhǎng)好長(zhǎng);或者內(nèi)聯(lián)元素被設(shè)置了white-space:nowrap,則表現(xiàn)為一江春水向東流
例如下面:
max-content的表現(xiàn)與之有些類似,具有收縮特性,同時(shí)最大內(nèi)容寬度
2. 理解width:fill-available
width:fill-available比較好理解,比方說,我們?cè)陧撁嬷腥右粋€(gè)沒有其他樣式的<div>元素,則,此時(shí),該<div>元素的width表現(xiàn)就是fill-available,自動(dòng)填滿剩余的空間。也就是我們平常所說的盒模型的margin,border,padding的尺寸填充。
出現(xiàn)fill-available關(guān)鍵字值的價(jià)值在于,我們可以讓元素的100%自動(dòng)填充特性不僅僅在block水平元素上,其他元素,例如,我們一直認(rèn)為的包裹收縮的inline-block元素上:
此時(shí),元素兼具了塊狀元素的自動(dòng)填充特性以及內(nèi)聯(lián)元素的定位對(duì)齊等特性(vertical-align/height/line-height)。于是,(例如)我們就可以直接使用line-height讓一個(gè)塊狀表現(xiàn)的元素垂直居中
3. 理解width:max-content
max-content的行為表現(xiàn)可以這么理解,假設(shè)我們的容器有足夠的寬度,足夠的空間,此時(shí),所占據(jù)的最大寬度是就是max-content所表示的尺寸。
會(huì)發(fā)現(xiàn),width:max-content表現(xiàn)得好像設(shè)置了white-space:nowrap一樣,文字一馬平川下去,元素的寬度也變成了這些文字一行顯示的寬度!為什么會(huì)這么表現(xiàn)呢?定義就是這樣的,對(duì)吧,我們對(duì)照下,首先,假設(shè)我們的容器有足夠的空間,你想呀,容器足夠空間,那下面的描述文字肯定會(huì)從左到右排列一行顯示了,此時(shí),上面的圖片和下面的文字哪個(gè)內(nèi)容寬度大?,自然是文字啦,所謂max-content就是width值采用寬度大的那個(gè)內(nèi)容的寬度,也就是這里的文字的長(zhǎng)度了
4. 理解width:min-content
min-content寬度表示的并不是內(nèi)部哪個(gè)寬度小就是哪個(gè)寬度,而是,采用內(nèi)部元素最小寬度值最大的那個(gè)元素的寬度作為最終容器的寬度。
首先,我們要明白這里的“最小寬度值”是什么意思。對(duì)于替換元素,例如圖片的最小寬度值就是圖片呈現(xiàn)的寬度,對(duì)于文本元素,如果全部是中文,則最小寬度值就是一個(gè)中文的寬度值;如果包含英文,因?yàn)槟J(rèn)英文單詞不換行,所以,最小寬度可能就是里面最長(zhǎng)的英文單詞的寬度。So,大家明白的說
同樣的是和display:inline-block做比較,display:inline-block雖然也具有收縮特性,但寬度隨最大長(zhǎng)度長(zhǎng)的那一個(gè)(同時(shí)不超過可用寬度)。而width:min-content的最終寬度是圖片和文字最小寬度值里面較大的那一個(gè)
5. 理解width:fit-content
width:fit-content也是應(yīng)該比較好理解的,“shrink-to-fit”表現(xiàn),換句話說,和CSS2.1中的float, absolute, inline-block的尺寸收縮表現(xiàn)是一樣的
OK,然后,有小伙伴會(huì)疑問,既然跟很多CSS聲明有一樣的表現(xiàn),那為什么還要再弄個(gè)新東西呢?
就拿水平居中效果舉例,首先浮動(dòng)肯定不行,因?yàn)橹挥凶蟾?dòng)和右浮動(dòng);絕對(duì)定位壓根不占據(jù)空間,普通流中根本無法應(yīng)用,而inline-block需要父級(jí)使用text-align:center,而本身可能還需要text-align:left略煩。
而width:fit-content可以沒有這些煩惱,因?yàn)?#xff0c;width:fit-content可以實(shí)現(xiàn)元素收縮效果的同時(shí),保持原本的元素block水平狀態(tài),于是,就可以直接使用margin:auto實(shí)現(xiàn)元素向內(nèi)自適應(yīng)同時(shí)的居中效果了。
總結(jié)
以上是生活随笔為你收集整理的理解CSS3 max/min-content及fit-content等width值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最实用前端开发框架对比评测
- 下一篇: 淘宝客软件