如何讓一個div水平垂直居中

1.盒子沒有固定的寬和高?

方法1.通過Transforms變形

? ? ? ? 這是比較簡單的方法,不僅能實(shí)現(xiàn)絕對居中的效果,也支持聯(lián)合可變高度方式使用。內(nèi)容塊定義transform: translate(-50%,-50%)? 必須加上top: 50%; left: 50%。但是不兼容IE8以及以下,因?yàn)檫@個屬性是css3新加的屬性,可能干擾其他transform效果,某些情形下會出現(xiàn)文本或元素邊界渲染模糊的現(xiàn)象。具體代碼如下:

   .wrapper {

       padding: 20px;

? ? ? ? ? ? ? ? ? ? ? background: orange;

? ? ? ? ? ? ? ? ? ? ? color: #fff;

? ? ? ? ? ? ? ? ? ? ? position: absolute;

? ? ? ? ? ? ? ? ? ? ? top: 50%;

? ? ? ? ? ? ? ? ? ? ? left: 50%;

? ? ? ? ? ? ? ? ? ? ? border-radius: 5px;

? ? ? ? ? ? ? ? ? ? ? -webkit-transform:

? ? ? ? ? ? ? ? ? ? ? ? ? translate(-50%, -50%);

? ? ? ? ? ? ? ? ? ? ? -moz-transform:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? translate(-50%, -50%);

? ? ? ? ? ? ? ? ? ? ? transform:

? ? ? ? ? ? ? ? ? ? ? ? ? translate(-50%, -50%);

? ? ? ? }

? ? ? ?

我不知道我的寬度和高是多少,我要實(shí)現(xiàn)水平垂直居中。

方法2.在父級元素上面加上3句話,就可以實(shí)現(xiàn)子元素水平垂直居中。這種方法只需在父級加上justify-content: center;align-items: center;display: -webkit-flex就可以,但是這種方法兼容性也不好。

.wrapper {

? ? width: 500px;

? ? height: 300px;

? ? background: orange;

? ? color: #fff;

? ? ? ? ? ? /*只需要在父元素上加這三句*/

? ? ? ? ? ? justify-content: center; /*子元素水平居中*/

? ? ? ? ? ? align-items: center; /*子元素垂直居中*/

? ? ? ? ? ? display: -webkit-flex;

? ? ? ? }

 

我不知道我的寬度和高是多少,我要實(shí)現(xiàn)水平垂直居中。


2.盒子有固定的寬和高

方法1、margin 負(fù)間距,兼容性好

這個方案代碼關(guān)鍵點(diǎn)在于:

 ? ? 1.必需知道該div的寬度和高度。

? ? ? 2.然后設(shè)置位置為絕對位置。

?  ? 3.距離頁面窗口左邊框和上邊框的距離設(shè)置為50%,這個50%就是指頁面窗口的寬度和高度的50%。

   4.最后將該div分別左移和上移,左移和上移的大小就是該DIV寬度和高度的一半。

   .wrapper {

      width: 400px;

      height: 18px;

      padding: 20px;

      background: orange;

      color: #fff;

      position: absolute;

      top:50%;

      left:50%;

      margin-top: -9px;

      margin-left: -200px;

  }

? ? ?

我知道我的寬度和高是多少,我要實(shí)現(xiàn)水平垂直居中。


方法2.margin:auto實(shí)現(xiàn)絕對定位元素的居中(此方法兼容ie8以上瀏覽器)

這一個代碼的代碼關(guān)鍵點(diǎn)在于:

1、上下左右均0位置定位;

? ? ? ? ? 2、margin: auto;

   .wrapper {

      width: 400px;

      height: 18px;

      padding:20px;

      background: orange;

      color: #fff;

      position: absolute;

      left:0;

      right:0;

      top: 0;

      bottom: 0;

      margin: auto;

    } 

我知道我的寬度和高是多少,我要實(shí)現(xiàn)水平垂直居中。


3.父級的高度根據(jù)子級的自適應(yīng),子級盒子垂直水平居中。使用display:table結(jié)合vertical-align:middle來實(shí)現(xiàn),此方法只兼容IE8以上的瀏覽器

這個代碼的關(guān)鍵點(diǎn)在于:

1.父級盒子設(shè)置display:table;

2.子級盒子設(shè)置display:table-cell;text-align: center;vertical-align:middle;

      #demo{

        display:table;

        width:500px;

        margin:10px auto;

        background:#eee;

      }      

      .box{

        width: 300px;

        height:100px;

        display:table-cell;

        text-align: center;

        vertical-align:middle;

      }      

水平垂直居中的隨意內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 2,126評論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,441評論 0 11
  • div水平居中的N種方法 一、單行垂直居中 如果一個容器中只有一行文字,對它實(shí)現(xiàn)居中相對比較簡單,我們只需要設(shè)置它...
    fredah閱讀 6,051評論 0 1
  • 一、 “每個人的行為背后都有其隱性動機(jī),每一個行為都是其現(xiàn)有認(rèn)知能力下對自己利益最大化的考量。從隨處可見的懲罰,獎...
    帥氣的燈泡閱讀 510評論 2 3
  • 晚上一直無法入睡,也許是因?yàn)榭慈嗣竦拿窳x,也許是因?yàn)樽约合牍ぷ鞯氖虑椋褪呛茈y入睡,所以做起來想寫寫日記 其實(shí)自...
    格魯特的日記閱讀 313評論 0 0

友情鏈接更多精彩內(nèi)容