CSS——布局布局神器display:table-cell


display:table-cell;絕對(duì)是一個(gè)現(xiàn)代的布局神器哗脖。

用float來做布局觸發(fā)的問題比較多糊肠,例如要清除浮動(dòng),元素浮動(dòng)后還會(huì)導(dǎo)致該元素脫離文檔流悯辙,即使你清除float琳省,該元素依舊是脫離文檔流。

左右布局能用display:inline-block;布局我就用它來布局躲撰,但是還是無法完全不使用它针贬,很多布局例如需要靠左和靠右的布局場景下就沒辦法不去使用float來布局。


元素兩端對(duì)齊


第一個(gè)案例是讓兩個(gè)元素分別向左和向右對(duì)齊拢蛋,如果是過去桦他,我一定會(huì)用float來實(shí)現(xiàn),但其實(shí)用table可以這么做:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                box-sizing:border-box;
             }

            .content{
                display: table;
                border:1px solid #06c;
                padding:15px 15px;
                max-width: 1000px;
                margin:10px auto;
                min-width: 320px;
                width:100%;
             }

            .box{
                width:100px;
                height:100px;
                border:1px solid #ccc;
                text-align: center;
                display: inline-block;
                font-size: 40px;
                line-height: 100px;
            }
           .right{
                text-align: right;
                display: table-cell;
            }
           .left{
                text-align: left;
                display: table-cell;
            }     
        </style>
   </head>
   <body>
       <div class="content">
            <div class="left">
                 <div class="box">B</div>
            </div>
            <div class="right">
                 <div class="box">A</div>
            </div>
       </div>
  </body>
  </html>

自動(dòng)平均劃分每個(gè)小模塊瓤狐,使其一行顯示


第二個(gè)案例我們先看看圖:

遇到上面這種布局瞬铸,一般會(huì)用float來做批幌,或者把每個(gè)li設(shè)置成display:inline-block;來做,并且都要設(shè)置給他們?cè)O(shè)置一個(gè)寬度嗓节,而且最痛苦的是5個(gè)li如果你設(shè)置width:20%;他們一定會(huì)掉下來荧缘,如果li都設(shè)置成display:table-cell;就不會(huì)出現(xiàn)這種情況拦宣,即使不設(shè)置寬度他們也會(huì)在一行顯示截粗,你在加多一行他也不會(huì)掉下來,依舊會(huì)在一樣顯示鸵隧。

       <!DOCTYPE html>
       <html lang="en">
       <head>
          <meta charset="UTF-8">
          <title></title>
          <style type="text/css">
                *{
                  box-sizing:border-box;
                 }

                .content{
                    display: table;
                    border:1px solid #06c;
                    padding:15px 15px;
                    max-width: 1000px;
                    margin:10px auto;
                    min-width:320px;
                    width:100%;
                }
               .content ul{
                    display: table;
                    width:100%;
                    padding:0;
                    border-right:1px solid #ccc;
                }

               .content ul li{
                   display: table-cell;
                   border:1px solid #ccc;
                   text-align: center;
                   height:100px;
                   border-right: none;
                   line-height: 100px;
                }
          </style>
       </head>
       <body>
          <div class="content">
              <ul>
                <li>1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
                <li>5</li>
             </ul>
          </div>
       </body>
       </html>

圖片垂直居中于元素


有時(shí)候我們需要讓圖片垂直水平都居中于某個(gè)元素绸罗,用常規(guī)寫法比較復(fù)雜,但用table-cell則相對(duì)簡單:

  <!DOCTYPE html>
  <html lang="en">
  <head>
         <meta charset="UTF-8">
         <title></title>
         <style type="text/css">
          *{
              box-sizing:border-box;
           }

          .content{
              display: table;
              border:1px solid #06c;
              padding:15px 15px;
              max-width: 1000px;
              margin:10px auto;
              min-width:320px;
              width:100%;
           }
          .img-box{
              height:150px;
              width:100px;
              border:1px solid red;
              display: table-cell;
              vertical-align: middle;
              text-align: center;
              background-color: #4679bd;
          }
         </style>
   </head>
   <body>
        <div class="content">
              <div class="img-box">
                 ![logo](http://upload-images.jianshu.io/upload_images/1432546-53d1c7f44dc6e873.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
              </div>
        </div>  
   </body>
   </html>

兩box實(shí)現(xiàn)等高對(duì)齊


上圖中的左側(cè)的box的高度始終跟隨右側(cè)的box的高度變化而變化

上面的案例我故意不對(duì)右側(cè)的box設(shè)置display:table-cell豆瘫,只對(duì)左側(cè)珊蟀,所以就會(huì)出現(xiàn)左側(cè)跟隨右側(cè)高度變化而變化,如果要實(shí)現(xiàn)不管兩個(gè)box哪個(gè)高度產(chǎn)生變化另一個(gè)就跟隨外驱,只需要把右側(cè)的box也設(shè)置成display:table-cell就可以實(shí)現(xiàn)了育灸。

<!DOCTYPE html>
<html lang="en">
<head>
     <meta charset="UTF-8">
     <title></title>
     <style type="text/css">
       *{
           box-sizing:border-box;
        }

        .content{
           display: table;
           border:1px solid #06c;
           padding:15px 15px;
           max-width: 1000px;
           margin:10px auto;
           min-width:320px;
           width:100%;
        }
        .img-box{
           height:150px;
           width:100px;
           border:1px solid red;
           display: table-cell;
           vertical-align: middle;
           text-align: center;
           background-color: #4679bd;
        }
        .text-box{
           margin-left: 20px;
           border:1px solid #ddd;
           padding:10px;
        }
     </style>
</head>
<body>
    <div class="content">
       <div class="img-box">
          ![logo](http://upload-images.jianshu.io/upload_images/1432546-53d1c7f44dc6e873.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
       </div>
       <div class="text-box">
          <span>
              王尼瑪和陳尼瑪都是年輕有為的騷年,有一天他們相遇了昵宇,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后磅崭,所以就愉快的生活在了一起。瓦哎。砸喻。。蒋譬。王尼瑪和陳尼瑪都是年輕有為的騷年割岛,有一天他們相遇了,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后羡铲,所以就愉快的生活在了一起蜂桶。。也切。扑媚。。王尼瑪和陳尼瑪都是年輕有為的騷年雷恃,有一天他們相遇了疆股,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后,所以就愉快的生活在了一起倒槐。旬痹。。。两残。王尼瑪和陳尼瑪都是年輕有為的騷年永毅,有一天他們相遇了,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后人弓,所以就愉快的生活在了一起沼死。。崔赌。意蛀。。王尼瑪和陳尼瑪都是年輕有為的騷年健芭,有一天他們相遇了县钥,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后,所以就愉快的生活在了一起慈迈。若贮。。吩翻。兜看。王尼瑪和陳尼瑪都是年輕有為的騷年,有一天他們相遇了狭瞎,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后,所以就愉快的生活在了一起搏予。熊锭。。雪侥。碗殷。
          </span>
       </div>
     </div> 
</body>
</html>

彈性、響應(yīng)式布局


</img>

上面的demo中大家只要改變?yōu)g覽器寬度就會(huì)發(fā)現(xiàn)他們其實(shí)都是會(huì)隨高度變化自動(dòng)變化高度的速缨,其實(shí)上面內(nèi)容我大部分沒有設(shè)置絕對(duì)單位锌妻,即使設(shè)置了也只設(shè)置其中一個(gè)box另一個(gè)就讓他去自適應(yīng)父元素的剩余留下來的寬度,其實(shí)布局的時(shí)候設(shè)置寬度是一件很痛苦的事情旬牲,因?yàn)槌舜罅坑?jì)算有時(shí)候可能在多瀏覽器下還算不準(zhǔn)仿粹,可能你在chrome設(shè)好的寬度在ie下就坑爹了,要寫hack才能解決原茅。最后一個(gè)案例吭历,據(jù)不靠譜的傳言faceboox曾經(jīng)也這么使用過:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title></title>
   <style type="text/css">
      *{
        box-sizing:border-box;
      }

      .content{
         display: table;
         border:1px solid #06c;
         padding:15px 15px;
         max-width: 1000px;
         margin:10px auto;
         min-width:320px;
         width:100%;
      }
      .left-box{
         float:left;
         margin-right: 10px;
         padding-top: 5px;
      }
      .right-box{
         display: table-cell;
         padding:10px;
         border:1px solid #ccc;
         margin-right: 10px;
         vertical-align: top;
      }
    </style>
    </head>
    <body>
     <div class="content">
          <div class="img-box">
            ![logo](http://upload-images.jianshu.io/upload_images/1432546-53d1c7f44dc6e873.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
          </div>
          <div class="right-box">
             <span>王尼瑪和陳尼瑪都是年輕有為的騷年,有一天他們相遇了擂橘,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后晌区,所以就愉快的生活在了一起。。朗若。恼五。。王尼瑪和陳尼瑪都是年輕有為的騷年哭懈,有一天他們相遇了唤冈,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后,所以就愉快的生活在了一起银伟。你虹。。彤避。傅物。王尼瑪和陳尼瑪都是年輕有為的騷年,有一天他們相遇了琉预,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后董饰,所以就愉快的生活在了一起。圆米。卒暂。。娄帖。王尼瑪和陳尼瑪都是年輕有為的騷年也祠,有一天他們相遇了,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后近速,所以就愉快的生活在了一起诈嘿。。削葱。奖亚。。王尼瑪和陳尼瑪都是年輕有為的騷年析砸,有一天他們相遇了昔字,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后,所以就愉快的生活在了一起首繁。作郭。。蛮瞄。所坯。王尼瑪和陳尼瑪都是年輕有為的騷年,有一天他們相遇了挂捅,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后芹助,所以就愉快的生活在了一起堂湖。。状土。无蜂。。王尼瑪和陳尼瑪都是年輕有為的騷年蒙谓,有一天他們相遇了斥季,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后,所以就愉快的生活在了一起累驮。酣倾。。谤专。躁锡。王尼瑪和陳尼瑪都是年輕有為的騷年,有一天他們相遇了置侍,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后映之,所以就愉快的生活在了一起。蜡坊。杠输。。秕衙。王尼瑪和陳尼瑪都是年輕有為的騷年蠢甲,有一天他們相遇了,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后灾梦,所以就愉快的生活在了一起峡钓。。若河。。寞宫。王尼瑪和陳尼瑪都是年輕有為的騷年萧福,有一天他們相遇了,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后辈赋,所以就愉快的生活在了一起鲫忍。。钥屈。悟民。。王尼瑪和陳尼瑪都是年輕有為的騷年篷就,有一天他們相遇了射亏,然后發(fā)現(xiàn)都對(duì)對(duì)方一見鐘情后,所以就愉快的生活在了一起。智润。及舍。。窟绷。</span>
          </div>
      </div>    
</body>
</html>

移動(dòng)端布局因?yàn)橛衐isplay:box這等屬性锯玛,所以table-cell相對(duì)就排不上什么大用場,不過在移動(dòng)端你要用table-cell也不是不可以兼蜈,根據(jù)自己對(duì)屬性的理解去使用就可以了攘残。


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


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市为狸,隨后出現(xiàn)的幾起案子歼郭,更是在濱河造成了極大的恐慌,老刑警劉巖钥平,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件实撒,死亡現(xiàn)場離奇詭異,居然都是意外死亡涉瘾,警方通過查閱死者的電腦和手機(jī)知态,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門洗贰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來年缎,“玉大人傲隶,你說我怎么就攤上這事吃靠⊥举欤” “怎么了耳璧?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵囱挑,是天一觀的道長凌唬。 經(jīng)常有香客問我赁还,道長妖泄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任艘策,我火速辦了婚禮蹈胡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朋蔫。我一直安慰自己罚渐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布驯妄。 她就那樣靜靜地躺著荷并,像睡著了一般。 火紅的嫁衣襯著肌膚如雪青扔。 梳的紋絲不亂的頭發(fā)上源织,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天翩伪,我揣著相機(jī)與錄音,去河邊找鬼雀鹃。 笑死幻工,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的黎茎。 我是一名探鬼主播囊颅,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼傅瞻!你這毒婦竟也來了踢代?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤嗅骄,失蹤者是張志新(化名)和其女友劉穎胳挎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溺森,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慕爬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屏积。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片医窿。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖炊林,靈堂內(nèi)的尸體忽然破棺而出姥卢,到底是詐尸還是另有隱情,我是刑警寧澤渣聚,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布独榴,位于F島的核電站,受9級(jí)特大地震影響奕枝,放射性物質(zhì)發(fā)生泄漏棺榔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一隘道、第九天 我趴在偏房一處隱蔽的房頂上張望掷豺。 院中可真熱鬧,春花似錦薄声、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苍息,卻和暖如春缩幸,著一層夾襖步出監(jiān)牢的瞬間壹置,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工表谊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钞护,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓爆办,卻偏偏與公主長得像难咕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子距辆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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