整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          實現(xiàn)div水平垂直居中的7種方式

          前端面試中,CSS相關(guān)的問題一般不會問的太多,但是有一個問題經(jīng)常被選為面試題。那就是:div 水平垂直居中你有哪些辦法?

          這道題可以考察候選人對CSS布局方式的理解,而且非常貼近日常工作,比較適合作為面試題。今天我就幫大家梳理一下CSS實現(xiàn)div水平垂直居中的方法,建議收藏。


          為了演示,首先創(chuàng)建兩個嵌套的 div,然后設(shè)置一下大小和背景顏色這樣比較容易看出效果。代碼如下:

          // html
          <div class="outer outer-box">
            <div class="inner inner-box"></div>
          </div>
          
          // css
          <style>
          .outer {
            height: 100px;
            width: 100px;
            background-color: royalblue;
          }
          .inner {
            height: 50px;
            width: 50px;
            background-color: red;
          }
          <style>

          設(shè)置完的效果就是這樣,然后我們需要把內(nèi)部的div 水平垂直居中。準(zhǔn)備就緒,正式開始。我們分別使用 Flex 布局,Position布局, Grid布局三種方式。


          flex布局

          Flex 是Flexible Box的縮寫,意為”彈性布局”。Flexible Box 模型是一種一維的布局模型,一次只能處理一個維度上的布局。flex布局有兩根軸線,主軸和交叉軸。flex就是根據(jù)這兩個軸線布局元素。

          1.1 對外層div設(shè)置flex布局

          在外層 div 上設(shè)置 justify-content: center; align-items: center; 屬性, display 設(shè)置為 flex。即可實現(xiàn)水平垂直居中。

          1.2 內(nèi)外div分別設(shè)置


          結(jié)果如下圖:

          Flex實現(xiàn)水平處置居中


          Position布局

          Position布局是傳統(tǒng)的布局方式,position屬性指定定位方式,利用CSS盒模型實現(xiàn)定位布局。

          2.1 內(nèi)部div使用 margin 屬性居中

          2.2 內(nèi)部 div 使用 transform 屬性居中

          實現(xiàn)結(jié)果如下:

          Grid布局

          Grid(網(wǎng)格)布局被稱為最強大的CSS布局方案,它可以將一個頁面劃分為幾個主要區(qū)域,以及定義這些區(qū)域的大小、位置、層次等關(guān)系。

          上面這種布局,Grid非常擅長。Flex布局屬于一維布局,Grid布局可以將容器分為行和列,對單元格進行布局,屬于二維布局。


          3.1 外層div使用 place-content 屬性

          3.2 外層div使用Grid布局

          3.3 內(nèi)外div分別設(shè)置

          實現(xiàn)結(jié)果如下:

          總結(jié)

          常見的問題也不見得簡單,前端知識還是常學(xué)常新的。了解不同類型的CSS布局方式,對處理實際問題也很有幫助。

          以上就是CSS實現(xiàn)div水平垂直居中的7種方式。如果你有別的方式,歡迎和大家一起分析。

          如果覺得文章對您有幫助,歡迎收藏,轉(zhuǎn)發(fā)~

          端面試題中經(jīng)常會出現(xiàn)這個問題,接下來,小郭就帶你揭秘幾種最常見的答案。

          關(guān)注我!了解更多前端干貨!

          先設(shè)定一個html結(jié)構(gòu)以及css的基本樣式。

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>如何讓div實現(xiàn)水平居中</title>
          </head>
          <body>
              <div id="dad">
                  <div id="son"></div>
              </div>
          </body>
          </html>

          css樣式

          #dad{
              width: 400px;
              height: 200px;
              border: 3px solid green;
              margin: 30px auto;
          }
          #son{
              width: 100px;
              height: 100px;
              background: purple;
          }

          方法一:純margin

          /*css處添加下面代碼*/
          #son{
          		margin:0 auto;
          }

          方法二:position定位

          /*css處添加下面代碼*/
          #dad{
              position: relative;
          }
          #son{
              position: absolute;
          		left:50%;
              margin-left:-50px;
          }
          /*注意:margin-left是負(fù)值,是#son這個div寬的一半*/?

          方法三:flexbox

          /*css處添加下面代碼*/
          #dad{
              display: flex;
              justify-content: center;    
          }
          /*注意:彈性盒子的大部分屬性都是寫在父級上的*/

          以上三種是最常見的,下期我們來講講其他奇形怪狀的方法~

          關(guān)注我,帶你了解更多前端干貨!

          學(xué)前端,就選銳盈課堂!

          自己是一名從事了多年開發(fā)的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個月整理了一份最適合2019年學(xué)習(xí)的web前端學(xué)習(xí)干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關(guān)注我的頭條號并在后臺私信我:前端,即可免費獲取

          Html5-CSS之五大居中方式

          你是不是也對元素居中的知識點很是模糊?是不是苦于找不到一個總結(jié)的通俗易懂的說明?是不是自己懶得去總結(jié)?恭喜你,搜到這篇博客! 這是鄙人在前端的學(xué)習(xí)與實踐中總結(jié)出的元素的五大居中方式,黏貼了代碼并對代碼做了解釋,希望對迷茫的有所幫助!

          下面的居中示例中,統(tǒng)一使用了同一個div作為父元素和p作為子元素

          設(shè)置一個div,并且設(shè)置了div的寬高邊框,div里面設(shè)置一個塊元素p,設(shè)置了它的寬高和背景色

          css居中方式1

          <!doctype html>
          <html>
          <head>
          <meta charset="utf-8">
          <title>五大居中1</title>
          <style>
          *{margin:0;}
          div{width:200px;height:300px;border:2px solid #000;margin:200px auto;
          text-align:center;font-size:0;
          }
          div p{width:100px;height:100px;background:#666;
          display:inline-block;vertical-align:middle;
          }
          div:after{content:"";display:inline-block;height:100%;vertical-align:middle;}
          </style>
          </head>
          <body>
          <div>
          	<p></p>
          </div>
          </body>
          </html>
          

          這里利用了偽元素讓子元素p在div盒子里左右水平居中只需要在它的父元素div里加text-align:center;垂直方向居中需要在父元素后面加了一個偽元素,并使得樣式為inline-block;height:100%;就是和父元素一樣高,vertical-align:middle;垂直居中,也就是p元素相對與偽元素居中,由于偽元素和div一樣高,所以相當(dāng)于p元素在div里垂直居中。

          css居中方式2

          <!doctype html>
          <html>
          <head>
          <meta charset="utf-8">
          <title>五大居中2</title>
          <style>
          *{margin:0;}
          div{position:relative;width:300px;height:400px;border:1px solid #000;margin:100px auto;}
          p{position:absolute;left:0;bottom:0;right:0;top:0;margin:auto;width:100px;height:100px;background:#f99;}
          </style>
          </head>
          <body>
          <div>
          	<p></p>
          </div>
          </body>
          </html>
          

          這里利用了定位居中

          子元素p設(shè)置position:absolute脫離文檔流,默認(rèn)以html作為父元素,所以我們給父元素div設(shè)置position:relative;使得p以div為父元素做位置的變動,left:0;tight:0;top:0;bottom:0;(只有設(shè)置了定位的元素才可以使用這種方式來移動),最后margin:auto;就會水平和垂直都居中。

          css居中方式3

          <!doctype html>
          <html>
          <head>
          <meta charset="utf-8">
          <title>五大居中3</title>
          <style>
          *{margin:0;}
          div{display:flex;justify-content:center;align-items:center;width:300px;height:400px;border:1px solid #000;margin:100px auto;}
          p{width:100px;height:100px;background:#f99;}
          </style>
          </head>
          <body>
          <div>
          	<p></p>
          </div>
          </body>
          </html>
          

          這里利用了彈性盒居中

          父元素div設(shè)置成彈性盒樣式,justify-content:center;主軸居中

          align-items:center;垂直居中(而且這兩個只能設(shè)置在父元素上,彈性盒知識)

          css居中方式4

          <!doctype html>
          <html>
          <head>
          <meta charset="utf-8">
          <title>五大居中4</title>
          <style>
          *{margin:0;}
          div{position:relative;width:300px;height:400px;border:1px solid #000;margin:100px auto;}
          p{width:100px;height:100px;background:#f99;position:absolute;
          left:50%;top:50%;margin:-50px 0 0 -50px;}
          </style>
          </head>
          <body>
          <div>
          	<p></p>
          </div>
          </body>
          </html>
          

          利用定位線左上角居中,然后左移子元素寬度的一半,再上移子元素高度的一半。

          css居中方式5

          <!doctype html>
          <html>
          <head>
          <meta charset="utf-8">
          <title>五大居中5</title>
          <style>
          *{margin:0;}
          div{position:relative;width:300px;height:400px;border:1px solid #000;margin:100px auto;}
          p{position:absolute;width:100px;height:100px;background:#f99;left:50%;top:50%;
          	transform:translate(-50%,-50%);}
          </style>
          </head>
          <body>
          <div>
          	<p></p>
          </div>
          </body>
          </html>
          

          利用動畫移動屬性transform

          結(jié)語

          相信看了上面的有關(guān)Html5、css的元素五大居中方式,你們就可以解決自己的小問題了,但是也要養(yǎng)成一個總結(jié)的好習(xí)慣。好記性不如爛筆頭!以前留下來的話語總是有他的道理。Come on!

          原文鏈接:https://blog.csdn.net/qq_38110274/article/details/102756968


          主站蜘蛛池模板: 免费无码一区二区三区蜜桃| 日美欧韩一区二去三区| 国产一区二区三区在线看片| 久久精品中文字幕一区| 一区在线观看视频| 日本伊人精品一区二区三区| 男人的天堂精品国产一区| 亚洲Av无码一区二区二三区| 国产日韩高清一区二区三区 | 一区二区三区精品| 国产精品一区二区av不卡| 色综合视频一区二区三区44| 亚洲一区二区三区首页| 一级特黄性色生活片一区二区 | 成人区精品人妻一区二区不卡| 欧美av色香蕉一区二区蜜桃小说| 性色A码一区二区三区天美传媒| 一区五十路在线中出| 福利国产微拍广场一区视频在线| 久久精品无码一区二区WWW| 国产一区二区三区乱码| 成人一区二区免费视频| 亚洲av成人一区二区三区在线观看| 日本精品一区二区三本中文| 亚洲AV无码一区二区三区网址| 亚洲蜜芽在线精品一区| 乱色精品无码一区二区国产盗| 国产免费一区二区视频| 波多野结衣AV无码久久一区| 真实国产乱子伦精品一区二区三区| 亚洲欧洲一区二区三区| 中文乱码精品一区二区三区| 国产福利电影一区二区三区,免费久久久久久久精 | 国产色综合一区二区三区| 午夜视频久久久久一区 | 亚洲sm另类一区二区三区| 国产经典一区二区三区蜜芽 | 国产伦精品一区二区三区视频猫咪 | 成人毛片无码一区二区| 国产精品久久久久一区二区三区 | 中文字幕无线码一区二区|