使用min-content實(shí)現(xiàn)容器寬度自適應(yīng)于內(nèi)部元素

前言

設(shè)計師可以分為如下兩類:

  • 先做好設(shè)計诚隙,然后將內(nèi)容放入靜態(tài)框架中
  • 優(yōu)秀的設(shè)計師充分考慮內(nèi)容的各個方面及其上下文,并創(chuàng)建適合于內(nèi)容的設(shè)計

HTML原生就是響應(yīng)式的(HTML內(nèi)容在視口內(nèi)流式的分布)。隨著CSS的廣泛應(yīng)用吼肥,設(shè)計者創(chuàng)建了許多固定布局的“盒子”并把內(nèi)容強(qiáng)制的放在盒子之中,這有悖于HTML原生響應(yīng)的特性。

過去幾年出現(xiàn)了一場革命茸炒,包括自適應(yīng)設(shè)計,響應(yīng)式設(shè)計阵苇,移動優(yōu)先設(shè)計等壁公。所有這些思想最根本部分就是優(yōu)先考慮內(nèi)容。CSS3也因此定義和實(shí)現(xiàn)一些新的屬性绅项。其中就包括內(nèi)在和外在的寬度(intrinsic and extrinsic width values)紊册。

引入問題

我們以一個常規(guī)的 WEB 頁面設(shè)計問題(figure 元素內(nèi)的圖片)來引出問題并加以說明。

<figure>
    <img src="o4iaq1g8nr.jpg" />
    <figcaption>www.30ke.cn</figcaption>
    <p>三十客 - 一個專注于前端學(xué)習(xí)和分享的網(wǎng)站快耿。</p>
</figure>
figure默認(rèn)顯示效果

因?yàn)?code>figure是塊級標(biāo)記囊陡,所以元素一直延伸到至整個容器中。 在以內(nèi)容優(yōu)先的設(shè)計中润努,我們通常希望容器 (本例中為 figure元素) 盡可能小关斜。 到目前為止,有幾種方法可以實(shí)現(xiàn)铺浇。

figure {
    float: left;
}
figure默認(rèn)顯示效果

通過設(shè)置浮動痢畜,可以實(shí)現(xiàn) figure 元素折疊。但是如果 figure 中的 p (段落)元素寬于圖片寬度,則figure元素會收縮至最寬的子元素丁稀,而不是圖片的寬度吼拥。
使用display: inline-blocktable-cell 同樣有上述問題。

figure {
    width: 500px;
}

figure 元素寫死一個寬度线衫,但這使得元素固定并失去響應(yīng)特性凿可。

min-width 來幫忙

我們最終就是要找到最優(yōu)的圖片容器的寬度以最達(dá)到最好的適應(yīng)內(nèi)部圖片的目的。如果內(nèi)部的文本換行顯示也沒關(guān)系授账。

我們可以通過 min-content 來達(dá)到目的枯跑。盡管該值 2006 年就出現(xiàn)了,但還處在實(shí)驗(yàn)階段白热,因此需要添加不同瀏覽器前綴敛助。

figure {
    border: 2px solid black;
    background: #cae9b8;
    margin: 0;
    width: -moz-min-content;
    width: -webkit-min-content;
    width: min-content;
}

上述代碼,很好的解決了上述問題屋确。而且 marginpadding 在圖片容器內(nèi)部仍然有效纳击。

min-content 是內(nèi)在和外在的寬高系列值中的一個,其它還包括 max-content 攻臀, fit-content等焕数。這些值和 flexboxgrid 和其它布局系統(tǒng)刨啸,使得WEB設(shè)計更優(yōu)秀更靈活堡赔。
min-content 的支持性很好,所有現(xiàn)代主流瀏覽器都支持該值呜投,但是 Internet Explorer and Opera Mini 并不支持加匈。

因此我們借助 max-widht 實(shí)現(xiàn)了回退的方案。

figure {
    max-width: 500px;
    max-width: min-content;
}

完整的帶回退的顯示方案見如下演示程序:

在線演示程序

本文主要匯編自 Dudley Storey 的一篇博客仑荐,并加入了針對Internet Explorer and Opera Mini 的回退方案雕拼。但是因?yàn)楸救怂接邢蓿闹须y免存在描述不清粘招,代碼不完善等問題啥寇,還請大家多多予以批評指正!

參考文獻(xiàn)

CSS Intrinsic & Extrinsic Sizing Module Level 3
Design From the Inside Out With CSS Min-Content
play.csssecrets.io/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洒扎,一起剝皮案震驚了整個濱河市辑甜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袍冷,老刑警劉巖磷醋,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胡诗,居然都是意外死亡邓线,警方通過查閱死者的電腦和手機(jī)淌友,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骇陈,“玉大人震庭,你說我怎么就攤上這事∧愦疲” “怎么了器联?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長婿崭。 經(jīng)常有香客問我拨拓,道長,這世上最難降的妖魔是什么氓栈? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任千元,我火速辦了婚禮,結(jié)果婚禮上颤绕,老公的妹妹穿的比我還像新娘。我一直安慰自己祟身,他們只是感情好奥务,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著袜硫,像睡著了一般氯葬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上婉陷,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天帚称,我揣著相機(jī)與錄音,去河邊找鬼秽澳。 笑死闯睹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的担神。 我是一名探鬼主播楼吃,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼妄讯!你這毒婦竟也來了孩锡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤亥贸,失蹤者是張志新(化名)和其女友劉穎躬窜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炕置,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荣挨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年男韧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垦沉。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡煌抒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出厕倍,到底是詐尸還是另有隱情寡壮,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布讹弯,位于F島的核電站况既,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏组民。R本人自食惡果不足惜棒仍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臭胜。 院中可真熱鬧莫其,春花似錦、人聲如沸耸三。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仪壮。三九已至憨颠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間积锅,已是汗流浹背爽彤。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缚陷,地道東北人适篙。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像蹬跃,于是被迫代替她去往敵國和親匙瘪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案蝶缀? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,734評論 1 92
  • 難題 眾所周知丹喻,如果不給元素一個具體的height,它就會自動適應(yīng)內(nèi)容的高度。假如我們希望width也具有同樣的類...
    咕咚咚bells閱讀 4,369評論 0 1
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5翁都? 答:HTML5是最新的HTML標(biāo)準(zhǔn)碍论。 注意:講述HT...
    kismetajun閱讀 27,445評論 1 45
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font柄慰,text-align鳍悠,li...
    wzhiq896閱讀 1,732評論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color税娜,font,text-align藏研,li...
    love2013閱讀 2,304評論 0 11