方法一:利用行高(line-height)定位spa
line-height一般是用於調節一段文字的行與行之間的距離,或者說兩行文字之間的距離,若是行高是500px,那麼每一行中的文字距離本行的頂部就是250px,若是將文字的行高設爲500px,而且外面的容器的高度也爲500px,一樣能夠實現垂直居中,可是用它來實現垂直居中,也是有缺點的,就是若是內容過多,文字就會跑到下一行,那麼內容就不可能垂直居中了。it
HTML代碼:io
<h1>Hi, I'm<span>Vertically Aligned</span> Within the H1</h1>class
CSS代碼:容器
body {方法
margin: 0;
im
padding: 0;
call
background: #1d1d1d;
margin
font-size: 10px;
top
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;
}