display:table-cell介紹

<pre>

[圖片上傳失敗...(image-2969e4-1516190383083)]

頁面布局是HTML+CSS的一個重點(diǎn),除了常見的幾種布局外沟于,如:float咳胃、position: absolute等等;還有一些功能強(qiáng)大且好用的布局方式旷太,本文就display:table-cell做學(xué)習(xí)總結(jié)展懈。

display:table-cell指讓標(biāo)簽元素以表格單元格的形式呈現(xiàn),使元素類似于td標(biāo)簽供璧。IE8+及現(xiàn)代版本的瀏覽器都支持此屬性存崖,IE6/7不支持(可用其他方法實(shí)現(xiàn)類似效果)。同樣嗜傅,display:table-cell屬性也會被float金句,position:absolute等屬性破壞效果檩赢,應(yīng)避免同時使用吕嘀。

設(shè)置了display:table-cell的元素:

  • 對寬度高度敏感

  • 對margin值無反應(yīng)

  • 響應(yīng)padding屬性

  • 內(nèi)容溢出時會自動撐開父元素

display:table-cell的幾種用法

1.大小不固定元素的垂直居中

[圖片上傳失敗...(image-c2b2d6-1516190383083)]

HTML代碼:

<div class="content">
    <div style="padding: 50px 40px;background: #cccccc;color: #fff;"></div>
    <div style="padding: 60px 40px;background: #639146;color: #fff;"></div>
    <div style="padding: 70px 40px;background: #2B82EE;color: #fff;"></div>
    <div style="padding: 80px 40px;background: #F57900;color: #fff;"></div>
    <div style="padding: 90px 40px;background: #BC1D49;color: #fff;"></div>
</div>

CSS代碼:

.content {
        display: table-cell;
        padding: 10px;
        border: 2px solid #999;
    }

    .content div {
        display: inline-block;
        vertical-align: middle;
    }

display:table-cell 加上 vertical-align:middle 使高度不同的元素都垂直居中,其中div的display:inline-block使幾個div在同一行顯示贞瞒。

2.兩列自適應(yīng)布局

HTML代碼:

<div class="content">
        <div class="left-box">
            <img src="img/a1.jpg" width="70">
        </div>
        <div class="right-box">...</div>
</div>

CSS代碼:

.content {
        display: table;
        padding: 10px;
        border: 2px solid #999;
    }

    .left-box {
        float: left;
        margin-right: 10px;
    }

    .right-box {
        display: table-cell;
        padding: 10px;
        width: 3000px;
        vertical-align: top;
        border: 1px solid #ccc;
    }

左邊頭像部分使用了float左浮動屬性偶房,左側(cè)使用 display: table-cell則實(shí)現(xiàn)了兩列自適應(yīng)布局。至于.right-box中的width:3000px解釋引用別人的:

display:table-cell 元素生成的匿名table默認(rèn)table-layout:auto军浆。寬度將基于單元格內(nèi)容自動調(diào)整棕洋。當(dāng)內(nèi)容足夠多將寬度完全撐開時,再讓某個元素(例如關(guān)閉按鈕)右側(cè)定位就會有問題乒融。所以設(shè)置width:3000px的用途是盡可能的寬的意思。

對于IE6/7赞季,我們可以使用display: inline-block屬性代替申钩。

3.等高布局

[圖片上傳失敗...(image-172428-1516190383083)]

HTML代碼:

<div class="content">
        <div class="box1">我和右邊等高</div>
        <div class="box2">table表格中的單元格最大的特點(diǎn)之一就是同一行列表元素都等高次绘。所以,很多時候,我們需要等高布局的時候邮偎,就可以借助display:table-cell屬性管跺。說到table-cell的布局,不得不說一下“匿名表格元素創(chuàng)建規(guī)則”</div>
</div>

CSS代碼:

    .content {
        display: table;
        padding: 10px;
        border: 2px solid #999;
    }

    .box1 {
        display: table-cell;
        width: 100px;
        border: 1px solid #ccc;
    }

    .box2 {
        display: table-cell;
        border: 1px solid #ccc;
    }

4.和inline-block組合使用

[圖片上傳失敗...(image-c0992-1516190383083)]

HTML代碼:

<div class="content">
    <div class="left">
        <div class="box">A</div>
    </div>
    <div class="right">
        <div class="box">B</div>
    </div
</div>

CSS代碼:

   .content {
        display: table;
        padding: 10px;
        margin: 10px auto;
        width: 1000px;
        border: 2px solid #999;
    }
     .left {
        display: table-cell;
        text-align: left;
        border: 1px solid #0cf;
    }

    .right {
        display: table-cell;
        text-align: right;
        border: 1px solid #fc0;
    }
    .box {
        display: inline-block;
        width: 100px;
        height: 100px;
        border: 1px solid #ccc;
    }

代碼解釋:A和B的父元素均設(shè)置了display:table-cell屬性禾进,所以

它們均勻占據(jù)設(shè)置了display:table的div元素豁跑。而A和B元素設(shè)置display:inline-block是為了讓它們相應(yīng)text-align的屬性設(shè)置。

inline-block 是寬高margin設(shè)定有效泻云,參與行內(nèi)格式化上下文贩绕,在行內(nèi)對齊時使用它自己的框底邊為基線對齊位置

5.列表布局

[圖片上傳失敗...(image-e17fb9-1516190383083)]

HTML代碼:

    <div class="content">
        <ul>
          <li>1</li>
          <li>2</li>
          <li>3</li>
          <li>4</li>
          <li>5</li>
        </ul>
    </div>

CSS代碼:

    .content {
        padding: 10px;
        margin: 10px auto;

        border: 2px solid #999;
    }

    .content ul {
      display: table;
      width: 100%;
      padding: 0;
    }

    .content ul li {
      display: table-cell;
      height: 100px;
      line-height: 100px;
      text-align: center;
      border: 1px solid #ccc;
    }

這類布局常用浮動布局(給每個li加上float:left屬性)實(shí)現(xiàn),但這樣做有明顯不足:

  • 需要清除浮動

  • 不支持不定高列表的浮動

display:table-cell可以代替浮動布局壶愤,但是其不是最好的方法淑倾。其他方法有待進(jìn)一步學(xué)習(xí)!

最后征椒,說說“匿名表格元素創(chuàng)建規(guī)則”娇哆。

CSS2.1表格模型中的元素,可能不會全部包含在除HTML之外的文檔語言中勃救。這時碍讨,那些“丟失”的元素會被模擬出來,從而使得表格模型能夠正常工作蒙秒。所有的表格元素將會自動在自身周圍生成所需的匿名table對象勃黍,使其符合table/inline-table、table-row晕讲、table- cell的三層嵌套關(guān)系覆获。

簡單來講,我們?yōu)橐粋€元素設(shè)置了display:table-cell屬性瓢省,而不將其父元素設(shè)置為display:table-row屬性弄息,瀏覽器會默認(rèn)創(chuàng)建一個表格行∏诨椋可參考支付寶UED的

基于display:table的CSS布局一文摹量!

參考:

CSS深入研究:display的恐怖故事解密(2) - table-cell

布局神器display:table-cell

我所知道的幾種display:table-cell的應(yīng)用

雖然很多部分都是直接借鑒張鑫旭-鑫空間-鑫生活的內(nèi)容,但都是自己親自實(shí)現(xiàn)了一遍的馒胆,僅用于學(xué)習(xí)缨称。

作者:即將離
鏈接:http://www.reibang.com/p/700ede25d0bc
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)祝迂,非商業(yè)轉(zhuǎn)載請注明出處睦尽。</pre>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市液兽,隨后出現(xiàn)的幾起案子骂删,更是在濱河造成了極大的恐慌掌动,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宁玫,死亡現(xiàn)場離奇詭異粗恢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)欧瘪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門眷射,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人佛掖,你說我怎么就攤上這事妖碉。” “怎么了芥被?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵欧宜,是天一觀的道長。 經(jīng)常有香客問我拴魄,道長冗茸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任匹中,我火速辦了婚禮夏漱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘顶捷。我一直安慰自己挂绰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布服赎。 她就那樣靜靜地躺著葵蒂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪专肪。 梳的紋絲不亂的頭發(fā)上刹勃,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機(jī)與錄音嚎尤,去河邊找鬼。 笑死伍宦,一個胖子當(dāng)著我的面吹牛芽死,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播次洼,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼关贵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了卖毁?” 一聲冷哼從身側(cè)響起揖曾,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤落萎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后炭剪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體练链,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年奴拦,在試婚紗的時候發(fā)現(xiàn)自己被綠了媒鼓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡错妖,死狀恐怖绿鸣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情暂氯,我是刑警寧澤潮模,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站痴施,受9級特大地震影響再登,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晾剖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一锉矢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧齿尽,春花似錦沽损、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卡骂,卻和暖如春国裳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背全跨。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工缝左, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浓若。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓渺杉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挪钓。 傳聞我的和親對象是個殘疾皇子是越,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,751評論 1 92
  • by zhangxinxu from http://www.zhangxinxu.com 本文地址: htt...
    抱著熊喵啃什么閱讀 1,297評論 0 3
  • 一:在制作一個Web應(yīng)用或Web站點(diǎn)的過程中碌上,你是如何考慮他的UI倚评、安全性浦徊、高性能、SEO天梧、可維護(hù)性以及技術(shù)因素的...
    Arno_z閱讀 1,157評論 0 1
  • 本文主要是起筆記的作用盔性,內(nèi)容來自慕課網(wǎng). 認(rèn)識CSS樣式 CSS全稱為“層疊樣式表 (Cascading Styl...
    0o凍僵的企鵝o0閱讀 2,641評論 0 30
  • 《讀者》2012第21期作者:王豪 南風(fēng)暖融融地吹拂著。 田地里大片大片的油菜花開了腿倚,黃燦燦的奪人眼球纯出;而蕎麥宛若...
    worldhello閱讀 613評論 0 1