如何讓div在父元素中水平且垂直居中

讓div在父元素中垂直居中

1.利用定位和margin:auto讓子元素在父元素中水平垂直居中
    <style>
        .box {
            width: 500px;
            height: 500px;
            margin: 100px auto;
            border: 1px solid #f00;
            position: relative;

        }

        .box1 {
            width: 100px;
            height: 100px;
            background-color: #0f0;
            position: absolute;
            left: 0;
            bottom: 0;
            top: 0;
            right: 0;
            margin: auto;
        }
    </style>
    <div class="box">
        <div class="box1"></div>
    </div>

實現(xiàn)效果:


box1在容器box中水平垂直居中.png
2.利用定位以及transform和margin取值屬性讓其居中

利用定位margin取值讓子元素居中:

 <style>
        .box {
            width: 500px;
            height: 500px;
            margin: 100px auto;
            border: 1px solid #f00;
            position: relative;

        }

        .box1 {
            width: 100px;
            height: 100px;
            background-color: #ff0;
            position: absolute;
            left:50%;
            top: 50%;
            margin-left: -50px;
            margin-top: -50px;
        }
    </style>
    <div class="box">
        <div class="box1"></div>
    </div>

margin取值應(yīng)為子元素寬高的一半(margin的取值可以為負(fù)值迄委,但padding顯然不行)并徘,缺點是必須知道子元素的寬高具體大小且需要計算,當(dāng)子元素的大小被修改后對應(yīng)的margin值也需要修改否則達(dá)不到劇中的效果踢京,從而引導(dǎo)我們使用更方便快捷的方法。
利用定位與transform實現(xiàn)垂直水平居中

    <style>
        .box {
            width: 500px;
            height: 500px;
            margin: 100px auto;
            border: 1px solid #f00;
            position: relative;

        }

        .box1 {
            width: 100px;
            height: 100px;
            background-color: #ff0;
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
        }
    </style>
    <div class="box">
        <div class="box1"></div>
    </div>

transform:translate(-50%离咐,-50%)第一個-50%是指x軸方向向左位移子元素本身寬的百分之50夷磕,而第二個-50%是指元素在y軸方向向上平移子元素本身高的百分之50。
二者的原理是相同的都是在加了left:50%top:50%后再減去盒子寬高的一半來實現(xiàn)水平垂直居中偏灿。

3.彈性盒display:flex;
  <style>
        .box {
            width: 500px;
            height: 500px;
            margin: 100px auto;
            border: 1px solid #f00;
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .box1 {
            width: 100px;
            height: 100px;
            background-color: #ff0;
        }
    </style>
    <div class="box">
        <div class="box1"></div>
    </div>

給父元素添加display:flex钝的;讓它變成彈性盒翁垂,在利用justify-content: center;與 align-items: center;,讓子元素在主軸與交叉軸(縱軸)方向居中扁藕。缺點是在網(wǎng)頁端彈性盒因為兼容問題一般不被經(jīng)常使用沮峡。

4.子元素轉(zhuǎn)為行內(nèi)塊元素
    <style>
        .box {
            width: 500px;
            height: 500px;
            margin: 100px auto;
            border: 1px solid #f00;
            text-align: center;

        }

        .box1 {
            width: 100px;
            height: 100px;
            background-color: #ff0;
            display: inline-block;
            vertical-align: middle;
        }

        span {
            height: 100%;
            width: 0;
            vertical-align: middle;
            display: inline-block;
        }
    </style>
    <div class="box">
        <div class="box1"></div><span></span>
    </div>

設(shè)置一個元素在一個容器中垂直居中,必須更改默認(rèn)的display屬性值為inline-block;并加上同級元素(標(biāo)尺)(同級元素[標(biāo)尺]樣式設(shè)置為vertical-align:middle;width:0;height:100%;display:inline-block;
三個條件:

      1:必須給容器(父元素)加上text-align:center;

      2:必須給當(dāng)前元素轉(zhuǎn)成行內(nèi)塊元素(display:inline-block;)再給當(dāng)前元素加上vertical-align:middle;

      3:在當(dāng)前元素的后面(沒有回車)加上同級元素span;并對span進(jìn)行
           vertical-align:middle;
           width:0;
           height:100%;
           display:inline-block 
5.父元素轉(zhuǎn)為gird利用網(wǎng)格布局
 <style>
        .box {
            width: 400px;
            height: 400px;
            border: 1px solid red;
            margin: 100px auto;
            display: grid;
            /* 第一個數(shù)值為垂直方向?qū)R方式 第二數(shù)值為水平方向?qū)R方式 */
            place-items: center center;
        }

        .box1 {
            width: 100px;
            height: 100px;
            background-color: #00f;

        }
    </style>

</head>

<body>
    <div class="box">
        <div class="box1"></div>
    </div>
</body>

原理類似于利用彈性布局亿柑,將父元素轉(zhuǎn)換為網(wǎng)格元素再利用ustify-items:center(內(nèi)容在單元格內(nèi)的水平對齊方式)邢疙,和align-items:center;(內(nèi)容在單元格內(nèi)垂直對齊方式)place-items為復(fù)合寫法望薄,相當(dāng)于父元素為一個一行一列的單元格而box1為它單元格中的元素疟游。(其實很利用place-content也能做到原理還沒搞懂...)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市痕支,隨后出現(xiàn)的幾起案子颁虐,更是在濱河造成了極大的恐慌,老刑警劉巖卧须,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件另绩,死亡現(xiàn)場離奇詭異儒陨,居然都是意外死亡,警方通過查閱死者的電腦和手機笋籽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蹦漠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人车海,你說我怎么就攤上這事笛园。” “怎么了侍芝?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵研铆,是天一觀的道長。 經(jīng)常有香客問我州叠,道長棵红,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任咧栗,我火速辦了婚禮窄赋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘楼熄。我一直安慰自己,他們只是感情好浩峡,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布可岂。 她就那樣靜靜地躺著,像睡著了一般翰灾。 火紅的嫁衣襯著肌膚如雪缕粹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天纸淮,我揣著相機與錄音平斩,去河邊找鬼。 笑死咽块,一個胖子當(dāng)著我的面吹牛绘面,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侈沪,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼揭璃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亭罪?” 一聲冷哼從身側(cè)響起瘦馍,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎应役,沒想到半個月后情组,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燥筷,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年院崇,在試婚紗的時候發(fā)現(xiàn)自己被綠了肆氓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡亚脆,死狀恐怖做院,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情濒持,我是刑警寧澤键耕,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站柑营,受9級特大地震影響屈雄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜官套,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一酒奶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧奶赔,春花似錦惋嚎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绞旅,卻和暖如春摆尝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背因悲。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工堕汞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晃琳。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓讯检,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卫旱。 傳聞我的和親對象是個殘疾皇子视哑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

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