css——如何實現(xiàn)水平垂直居中

居中也是 css 中使用頻率非常高的知識點制妄,看下面的例題两蟀。

    <style>
      .wp {
        border: 1px solid orange;
        width: 300px;
        height: 300px;
      }

      .box {
        background: green;
        width: 100px;
        height: 100px;
      }
    </style>
    <body>
        <div class="wp">
          <div class="box">box</div>
        </div>
    </body>   

使用多種方式實現(xiàn)綠色塊的水平和垂直居中。

一矗愧、居中元素定寬高

  1. absolute + 負 margin

設(shè)置絕對定位后梯醒,自身的定位是相對于定位為非 static 父級的寬高宽堆。設(shè)置 left 和 top 后,再使 .box 反向偏移自身的寬高一半即可茸习。

    .wp {
      position: relative;
    }
    .box {
      position: absolute;
      top: 50%;
      left: 50%;
      margin-left: -50px;
      margin-top: -50px;
    }
  1. absolute + calc

與第一種原理相同畜隶,寫法更簡便。

    .root {
      position: relative;
    }

    .textBox {
      position: absolute;
      top: calc(50% - 50px);
      left: calc(50% - 50px);
    }
  1. absolute + margin auto

依然使用絕對定位号胚,但是設(shè)置各個方向的距離都是 0籽慢,此時配合 margin 為 auto,就實現(xiàn)了在各個方向上都居中了猫胁。

    .wp {
      position: relative;
    }
    .box {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      margin: auto;
    }

二箱亿、居中元素不定寬高

不定寬高的元素居中在開發(fā)中更為常見,解決的辦法也更多弃秆。

    <style>
      .wp {
        border: 1px solid orange;
        width: 300px;
        height: 300px;
      }

      .box {
        background: green;
      }
    </style>

    <body>
      <div class="wp">
        <div class="box">box</div>
      </div>
    </body>
  1. absolute + transform

該種方式與定寬高的第一種方式也非常相似届惋,只不過不定寬高時無法反向位移自身的一半髓帽,
這時就可以利用 CSS3 新增的 transform,transform 的 translate 屬性也可以設(shè)置百分比脑豹,這個百分比是相對于自身的寬和高郑藏,在不定寬高時就可以使用。

    .wp {
      position: relative;
    }
    .box {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
  1. lineheight

此種方法是把 box 設(shè)置為 inline-block 行內(nèi)塊元素瘩欺,通過 text-align 可以做到水平居中必盖,同時通過 vertical-align 做到垂直方向上的居中。

    .wp {
      line-height: 300px;
      text-align: center;
      font-size: 0px;
    }
    .box {
      font-size: 16px;
      display: inline-block;
      vertical-align: middle;
      line-height: initial;
    }
  1. table

table 在以前經(jīng)常被用來處理頁面布局俱饿,但是隨著前端的發(fā)展歌粥,table 漸漸的退出了大家的視野,不過用來處理居中依然好用拍埠。

    <style>
      .wp {
        text-align: center;
      }
      .box {
        display: inline-block;
      }
    </style>
    <table>
      <tbody>
        <tr>
          <td class="wp">
            <div class="box">test</div>
          </td>
        </tr>
      </tbody>
    </table>
  1. css-table

如果感覺 table 方式代碼復(fù)雜失驶、產(chǎn)生冗余,那么就可以使用 css-table械拍,采取 table 布局的特性效果突勇,但是不使用 table 元素装盯。

    .wp {
      display: table-cell;
      text-align: center;
      vertical-align: middle;
    }
    .box {
      display: inline-block;
    }
  1. flex

flex 是非常新的布局方式坷虑,實現(xiàn)居中也異常簡單。

    .wp {
      display: flex;
      justify-content: center;
      align-items: center;
    }
  1. grid

目前最新的布局方式埂奈,功能強大迄损,但受限于兼容性,沒有得到廣泛的使用账磺。

    .wp {
      display: grid;
    }
    .box {
      align-self: center;
      justify-self: center;
    }

完結(jié)

如果遇到居中的需求可以參考以下優(yōu)先級使用

  • PC 端有兼容性要求:
    寬高固定: absolute + 負 margin
    寬高不固定: absolute + transform 和 css-table
  • PC 端無兼容性要求:flex grid
  • 移動端:flex
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芹敌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子垮抗,更是在濱河造成了極大的恐慌氏捞,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冒版,死亡現(xiàn)場離奇詭異液茎,居然都是意外死亡,警方通過查閱死者的電腦和手機辞嗡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門捆等,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人续室,你說我怎么就攤上這事栋烤。” “怎么了挺狰?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵明郭,是天一觀的道長买窟。 經(jīng)常有香客問我,道長薯定,這世上最難降的妖魔是什么蔑祟? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮沉唠,結(jié)果婚禮上疆虚,老公的妹妹穿的比我還像新娘。我一直安慰自己满葛,他們只是感情好径簿,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嘀韧,像睡著了一般篇亭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锄贷,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天译蒂,我揣著相機與錄音,去河邊找鬼谊却。 笑死柔昼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的炎辨。 我是一名探鬼主播捕透,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碴萧!你這毒婦竟也來了乙嘀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤破喻,失蹤者是張志新(化名)和其女友劉穎虎谢,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曹质,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡婴噩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了咆繁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讳推。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玩般,靈堂內(nèi)的尸體忽然破棺而出银觅,到底是詐尸還是另有隱情,我是刑警寧澤坏为,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布究驴,位于F島的核電站镊绪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏洒忧。R本人自食惡果不足惜蝴韭,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熙侍。 院中可真熱鬧榄鉴,春花似錦、人聲如沸蛉抓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巷送。三九已至驶忌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笑跛,已是汗流浹背付魔。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留飞蹂,地道東北人几苍。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像晤柄,于是被迫代替她去往敵國和親擦剑。 傳聞我的和親對象是個殘疾皇子妖胀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

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