用css實(shí)現(xiàn)各種情況下的水平垂直居中

作為一個(gè)初學(xué)者,已被各種情況下的垂直水平居中搞暈笙僚,于是乎芳肌,記錄下我所遇到的一些情況下的垂直水平居中。有錯(cuò)誤,歡迎指正哦亿笤!哦翎迁,這也是我人生中的第一篇博客兒。

一净薛、容器中的元素居中

1汪榔、塊級(jí)元素中的塊級(jí)元素居中(ps:注意看代碼中的注釋部分哦)

  • margin和table-cell
.div1{
      height:200px;
      width:200px;
      border:1px solid red;
      margin:20px;
      display:table-cell;  /* 由于table-cell方式顯示時(shí),margin肃拜,padding都不起作用痴腌,但是不影響子元素 */
      vertical-align:middle;
    }
    .test{
      height:50px;
      width:100px;
      border:1px solid blue;
      margin-left:auto;     /* 放在要居中的行內(nèi)元素上 */
      margin-right:auto;
    }
<div class="div1">
    <div class="test">
      1.我是塊級(jí)元素div
    </div>
</div>
結(jié)果圖
  • position及負(fù)margin(結(jié)果圖和上面一樣)
    .div3{
      height:200px;
      width:200px;
      border:1px solid red;
      margin-top:20px;
      position:relative;
    }
    .test3{
      height:50px;
      width:100px;
      border:1px solid blue;
      position:absolute;
      top:50%;
      left:50%;
      margin-top:-25px;
      margin-left:-50px;
    }
<div class="div3">
    <div class="test3">
      3.我是塊級(jí)元素div
    </div>
</div>
  • 絕對(duì)定位法(結(jié)果圖和方法一一樣)
   .div4{
      height:200px;
      width:200px;
      border:1px solid red;
      margin-top:20px;
      position:relative;
    }
    .test4{
      height:50px;
      width:100px;
      border:1px solid blue;
      overflow:auto;   /* 加上overflow: auto會(huì)在內(nèi)容高度超過容器高度的情況下給內(nèi)容塊顯示滾動(dòng)條而不越界 */
      position:absolute;
      top:0;right:0;bottom:0;left:0;
      margin:auto;
    }
    <div class="div4">
    <div class="test4">
      4.我是塊級(jí)元素div
    </div>
  </div

我是從網(wǎng)上查資料得到的絕對(duì)定位法,具體參考http://blog.csdn.net/freshlover/article/details/11579669

  • padding法(父容器和子容器都要是固定高度燃领,才能計(jì)算padding)
.div1{
            height:200px;
            width:200px;
            border:1px solid red;
            margin:20px;
            box-sizing:border-box;/*這里計(jì)算父元素padding-left的方法為(父元素寬度-子元素寬度)/2*/
            padding-left:50px;   /* (200-100)/2 */
            padding-top:75px;
        }
        .test{
            height:50px;
            width:100px;
            border:1px solid blue;
        }

<b>注:如果不設(shè)定box-sizing:border-box士聪,瀏覽器默認(rèn)content-box,計(jì)算父容器的padding-left的方式就是[(父容器寬度+左右border寬度)-(子容器寬+水平padding寬+左右border寬)]/2
當(dāng)然柿菩,同理可以設(shè)置margin
<b>

  • flex布局
.div1{
            height:200px;
            width:200px;
            border:1px solid red;
            margin:20px;
            display:flex;
            justify-content:center; /* flex布局 */
            align-items:center;
        }

        .test{
            height:50px;
            width:100px;
            border:1px solid blue;
        }

<b>這個(gè)方法也可以用于“塊級(jí)元素中的行內(nèi)元素居中”的情況,不過兼容性不是很好,查是否兼容可以點(diǎn)擊http://caniuse.com/<b>

2雨涛、塊級(jí)元素中的行內(nèi)元素居中

 .div2{
   height:200px;
   width:200px;
   border:1px solid red;
   margin-bottom:20px;
   text-align:center; /* 注意:text-align只作用于塊級(jí)元素下的文本或行內(nèi)元素枢舶,對(duì)塊級(jí)元素本身和子元素為塊級(jí)元素?zé)o作用 */
   display:table-cell;
   vertical-align:middle; 
 }
 .btn{
   display:inline-block; /* 由于a是行內(nèi)元素,高寬不可以控制替久,故display一下 */
   height:50px;
   width:100px;
   border:1px solid blue;
 }
<div class="div2">
 <a href="#" class="btn">
   2.我是行內(nèi)元素a
 </a>
</div>
結(jié)果圖

二凉泄、文本居中

1、單行文本居中

.div1{
      height:200px;
      width:200px;
      border:1px solid red;
      line-height:200px;
      text-align:center;
    }


<b>注:如果里面的文字是p或h1這些標(biāo)簽則要小心蚯根,它們有默認(rèn)的magin和padding值后众,所以要先清零÷梗或者我們可以直接在css文件開頭寫個(gè)“*{margin:0;padding:0;}”<b>

2蒂誉、多行文本居中

.div1{
      height:200px;
      width:200px;
      border:1px solid red;
      text-align:center;
      display:table-cell;  
      vertical-align:middle; 
    }
<div class="div1">
      1.我是塊級(jí)元素div1.我是塊級(jí)元素div1.我是塊級(jí)元素div
</div>

結(jié)果圖

3、多行文本居中的特殊情況

.div1{
          height:200px;
          width:200px;
          border:1px solid red;
          margin:20px;
          display:table-cell; 
          vertical-align:middle;
      }

      .test{
          height:50px;
          width:100px;
          border:1px solid blue;
          margin-left:auto;     
          margin-right:auto;
          text-align:center;
          display:table-cell; 
          vertical-align:middle;
      }
為什么

<b>結(jié)果不如人意距帅,為什么呢右锨?因?yàn)閐isplay:table-cell顯示時(shí)margin,padding都是沒有作用的碌秸。因此绍移,遇到這種情況,可以算padding讥电,也可以用上面的方法蹂窖,只不過元素居中則要改成flexbox的方式(因?yàn)檫@個(gè)方式里沒有涉及margin)<b>

新方法

    .div5{
      height:200px;
      width:200px;
      border:1px solid red;
      margin-top:20px;
      font-size:0;
      text-align:center;
    }
    .div5:after{
      content:'';
      height:100%;
      display:inline-block;
      vertical-align:middle;
    }
    .test5{
      overflow:auto;   /* 加上overflow: auto會(huì)在內(nèi)容高度超過容器高度的情況下給內(nèi)容塊顯示滾動(dòng)條而不越界 */
      display:inline-block;
      font-size:16px;
      vertical-align:middle;
    }
<div class="div5">
    <div class="test5">
      5.我是塊級(jí)元素div5.我是塊級(jí)元素div5.我是塊級(jí)元素div5.我是塊級(jí)元素div
  </div>

很多人用這種方法做居中不能理解哎,文本是多行貌似是居中顯示恩敌,但是是單行就不居中瞬测,況且去掉text-align:center;多行也不居中了?菜鳥一枚涣楷,求懂者解答分唾,謝謝

總結(jié)

我覺得用的最多也是最重要的就是text-align:center 和 margin:0 auto;
作為新手要區(qū)分好它們。

  <style>
    p{
      width:200px;
      background-color:red;
      margin:0 auto;  /* 讓p元素在父元素中水平居中 */
      text-align:center;  /*  讓p元素內(nèi)的文本居中 */
    }
  </style>
<body>
<p>aaaa</p>
</body>

Thank you!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狮斗,一起剝皮案震驚了整個(gè)濱河市绽乔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碳褒,老刑警劉巖折砸,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異沙峻,居然都是意外死亡睦授,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門摔寨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)去枷,“玉大人,你說我怎么就攤上這事是复∩径ィ” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵淑廊,是天一觀的道長(zhǎng)逗余。 經(jīng)常有香客問我,道長(zhǎng)季惩,這世上最難降的妖魔是什么录粱? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮画拾,結(jié)果婚禮上啥繁,老公的妹妹穿的比我還像新娘。我一直安慰自己青抛,他們只是感情好输虱,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脂凶,像睡著了一般宪睹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚕钦,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天亭病,我揣著相機(jī)與錄音,去河邊找鬼嘶居。 笑死罪帖,一個(gè)胖子當(dāng)著我的面吹牛促煮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播整袁,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼菠齿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了坐昙?” 一聲冷哼從身側(cè)響起绳匀,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炸客,沒想到半個(gè)月后疾棵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡痹仙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年是尔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片开仰。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拟枚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出众弓,到底是詐尸還是另有隱情恩溅,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布田轧,位于F島的核電站暴匠,受9級(jí)特大地震影響鞍恢,放射性物質(zhì)發(fā)生泄漏傻粘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一帮掉、第九天 我趴在偏房一處隱蔽的房頂上張望弦悉。 院中可真熱鬧,春花似錦蟆炊、人聲如沸稽莉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)污秆。三九已至,卻和暖如春昧甘,著一層夾襖步出監(jiān)牢的瞬間良拼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工充边, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庸推,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像贬媒,于是被迫代替她去往敵國(guó)和親聋亡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案际乘? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • 1坡倔、垂直對(duì)齊 如果你用CSS,則你會(huì)有困惑:我該怎么垂直對(duì)齊容器中的元素蚓庭?現(xiàn)在致讥,利用CSS3的Transform,...
    kiddings閱讀 3,150評(píng)論 0 11
  • 一 外部式css樣式 (也可稱為外聯(lián)式)就是把css代碼寫一個(gè)單獨(dú)的外部文件中器赞,這個(gè)css樣式文件以“.css...
    KunMitnic閱讀 927評(píng)論 0 1
  • 本課來(lái)自http://www.imooc.com/learn/9請(qǐng)不要用作商業(yè)用途垢袱。 HTML5 HTML介紹 H...
    PYLON閱讀 3,200評(píng)論 0 5
  • 文/黃春雨 二零一四年,那個(gè)身處于高三的歲月港柜,面對(duì)那一張張發(fā)白的試卷请契,一摞摞高過人頭的書,一沓沓需要整理...
    黃春雨閱讀 206評(píng)論 3 5