利用CSS讓元素垂直置中的兩種實現方法

來源:互聯網
上載者:User

文章簡介:利用CSS讓元素垂直置中是個很頭疼的問題,這裡就介紹兩種簡單實用的方法。

利用CSS讓元素垂直置中是個很頭疼的問題,這裡就介紹兩種簡單實用的方法

方法一:利用行高(line-height)定位

line-height通常是用於調節一段文字的行與行之間的距離,或者說兩行文字之間的距離,如果行高是500px,那麼每一行中的文字距離本行的頂部就是250px,如果將文字的行高設為500px,並且外面的容器的高度也為500px,同樣可以實現垂直置中,但是用它來實現垂直置中,也是有缺點的,就是如果內容過多,文字就會跑到下一行,那麼內容就不可能垂直置中了。

HTML代碼:

 <h1>Hi, I'm<span>Vertically Aligned</span> Within the H1</h1>

CSS代碼:

body {
 
         margin: 0;
 
         padding: 0;
 
         background: #1d1d1d;
 
         font-size: 10px;
 
         font-family: Verdana, Arial, Helvetica, sans-serif;
 
}
 
h1 {
 
         font: 3em Georgia, "Times New Roman", Times, serif;
 
         color: #fff;
 
         height: 500px;
 
         line-height: 500px;
 
         text-align:center;
 
         border: 10px solid #999;
 
}
 
h1 span {
 
         font-weight: bold;
 
         font-size:1.5em;
 
         color: #fff000;
 
}
 
p {
 
         font-size: 1.3em;
 
         color: #999;
 
}
 
strong {
 
         color: #fff;
 
}

方法二:利用絕對位置

先來看看效果,查看示範
這個方法有個缺點我必須指出,就是外面的塊狀元素,必須指定高度,所以如果你在裡面放動態內容的話,後果會很糟糕滴~

HTML代碼:

<div class="vert">
 
        <h1>Hi, I'm<span>Vertically Aligned</span></h1>
 
        <p>Abigo sudo mara paulatim odio, accumsan luptatum nibh nibh refero metuo opes ut fatua. Acsi et fere similis <strong>Using</strong> augue <strong>absolute</strong> validus. Regula <strong>positioning</strong> eu jus vel, indoles fere iaceo ea similis. Velit praemitto nulla vel luctus secundum. </p>
 
</div>

CSS代碼:
這種用絕對位置來實現的垂直置中,取決與元素的寬度和高度,你可以用下面這兩個公式來計算元素的左邊距和上邊距

元素的寬度/2 = 負左邊距
元素的高度/2 = 負上邊距

在這個例子中,我們就是這麼計算的

.vert {
 
        width: 580px;
 
        height: 190px;
 
        position: absolute;
 
        top: 50%;
 
        left: 50%;
 
        margin: -95px 0 0 -290px;
 
}

完整CSS代碼

body {
 
        margin: 0;
 
        padding: 0;
 
        background: #1d1d1d;
 
        font-size: 10px;
 
        font-family: Verdana, Arial, Helvetica, sans-serif;
 
}
 
h1 {
 
        font: 4em Georgia, "Times New Roman", Times, serif;
 
        color: #fff;
 
        border-bottom: 5px dotted #999;
 
        margin: 0;
 
        padding: 0 0 10px;
 
}
 
h1 span {
 
        font-weight: bold;
 
        display:block;
 
        font-size:1.5em;
 
        color: #fff000;
 
}
 
p {
 
        font-size: 1.3em;
 
        color: #999;
 
}
 
strong {
 
        color: #fff;
 
}
 
.vert {
 
        width: 580px;
 
        height: 190px;
 
        position: absolute;
 
        top: 50%;
 
        left: 50%;
 
        margin: -95px 0 0 -290px;
 
}

問題延伸

如果元素的外面還有一個父級元素,如果才能讓元素垂直置中於父級元素內部?比如下面的代碼,多了一個父級元素

<div class="container">
 
         <div class="vert">
 
          <h1>Hi, I'm Nested &<span>Vertically Aligned</span></h1>
 
          <p>Abigo sudo mara paulatim odio, accumsan luptatum nibh nibh refero metuo opes ut fatua. Acsi et fere similis <strong>Using</strong> augue <strong>absolute</strong> validus. Regula <strong>positioning</strong> eu jus vel, indoles fere iaceo ea similis. Velit praemitto nulla vel luctus secundum. </p>
 
         </div>
 
</div>

這時候,就必須在定義父級元素的CSS代碼中加入position: relative;才能夠使內部元素垂直置中於父級內部,代碼如下:

.container {
 
        position: relative;
 
        height: 500px;
 
        width: 800px;
 
        border: 10px solid #999;
 
        background: #000;
 
        margin: 20px;
 
}



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.