使用css實現(xiàn)垂直居中的方法總結(jié)

寫在前面的話:

在編寫html頁面的時候最??紤]的就是應(yīng)該是類的命名吧,其次就是該使用怎樣的布局方式使得頁面的適應(yīng)性比較高。居中在頁面布局中是最常用的布局之一了,根據(jù)度娘和本人開發(fā)經(jīng)驗總結(jié)出以下三種可用性比較高的居中方案,如有補(bǔ)充請在評論區(qū)留言指正。話不多說開搞!

正文

1.第一種:

使用 position:absolut+transform 實現(xiàn)垂直居中

<style>
    .parent{
                width: 100%;
                height: 500px;
                border: #008000 1px solid;
                position: relative;
                margin-bottom: 10px;
            }
            .content{
                width: 100px;
                height: 100px;
                border: #ccc 1px solid;
            }
            .content1{
                background-color: #1effcc;
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translateY(-50%) translateX(-50%);
            }
</style>
    <div class="parent">
            <div class="content content1">
            position:absolut+transform
            </div>
        </div>

效果圖如下:
1285342-20200811150818882-2102128730.png

重點是將父類元素的position設(shè)置為relative,再將子元素的position設(shè)置為absolute,之后進(jìn)行絕對定位(top:50%,left:50%),最后通過使用transform對元素進(jìn)行修正位置,使得元素處于居中的位置。

2.第二種:

<style>
    body{
                height: 100%;
                width: 100%;
                overflow-x: hidden;
            }
            .parent{
                width: 100%;
                height: 500px;
                border: #008000 1px solid;
                position: relative;
                margin-bottom: 10px;
            }
            .content{
                width: 100px;
                height: 100px;
                border: #ccc 1px solid;
            }
            .content2{
                background-color: #11d5ff;
                position: absolute;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                margin: auto;
            }
</style>
    <div class="parent">
            <div class="content content2">
                <span>
                position:
                absolut
                +
                margin
                </span>
            </div>
        </div>

該方法同樣可以得到居中的效果,其重點也是父類元素(.parent)的元素position設(shè)置為relative,子類設(shè)置為absolute,與第一種方式不同的是使用margin:auto 屬性使得元素居中,值得一提的是top屬性和bottom屬性的值要一樣,right和left的值要一樣,這樣才能保證元素

居中,為了方便都設(shè)置為0。

3.第三種:

使用vertical-align: middle;display: inline-block;

<style>
    body{
                height: 100%;
                width: 100%;
                overflow-x: hidden;
            }
            .parent{
                width: 100%;
                height: 500px;
                border: #008000 1px solid;
                position: relative;
                margin-bottom: 10px;
            }
.content{
                width: 100px;
                height: 100px;
                border: #ccc 1px solid;
                background: #FFA500;
            }
.parent2{
                text-align: center;
                line-height: 500px;
            }
.content5{
                vertical-align: middle;
                display: inline-block;
                line-height: 18px;
            }
</style>
    <div class="parent parent2">
            <div class="content content5">
                vertical-align: middle;
                display: inline-block;
            </div>
        </div>

將子類元素(.content)display設(shè)置inline-block 父類元素使用line-height的方式(設(shè)置line-height的高度為.parent 父類元素的高度)使得在垂直上對齊。

3.第四種:

使用flex布局

 <style>
         body{
         height: 100%;
         width: 100%;
         overflow-x: hidden;
         }
         .parent{
         width: 100%;
         height: 500px;
         border: #008000 1px solid;
         position: relative;
         margin-bottom: 10px;
         }
         .content{
         width: 100px;
         height: 100px;
         border: #ccc 1px solid;
         background: #FFA500;
         }
         .parent2{
        
            display: flex;
            align-items: center;
            justify-content: center;
         line-height: 500px;
         }
         .content5{
         vertical-align: middle;
         display: inline-block;
         line-height: 18px;
         }
    </style>
      <div class="parent parent2">
          <div class="content content5">
              display: flex;
              align-items: center;
              justify-content: center;
          </div>
      </div>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 一般化技巧常用到的語言: 大多數(shù)人也會如此… 一般人遇到…也可能做與你類似的事情 根據(jù)……(經(jīng)驗或發(fā)展理論) 一般...
    歲月靜好_9afd閱讀 163評論 0 1
  • 成,第十四天落地實修 一、斷舍離 今天斷了拖拉的念想,處理了之前一直拖延的事情。首先,去其他防疫站給兒子打了流感疫...
    幸福芳芳閱讀 230評論 0 0
  • 1.感謝今天喝的八寶粥,飽飽的 2.感謝出的太陽,太開心了哦耶,明媚 3.感謝幸運的躲過一劫,如果再上一節(jié)臺階,就...
    krysdracula閱讀 149評論 0 0
  • 今天多加了一個微信,其中一個姐姐是很有意向的客戶,有一丟丟開心。
    9f2b06921e14閱讀 126評論 0 0
  • 首先介紹下自己的背景: 我11年左右入市到現(xiàn)在,也差不多有4年時間,看過一些關(guān)于股票投資的書籍,對于巴菲特等股神的...
    瞎投資閱讀 5,936評論 3 8

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