利用 CSS 來實現對象的垂直居中有許多不同的方法,比較難的是選擇那個正确的方法。有些方法在一些浏覽器中無效。下面我們來通過分析使對象垂直集中的5種不同方法的優缺來确定如何選擇最優的方法。
方法1:
這個方法使用絕對定位的 div,把它的 top 設置為 50%,top margin 設置為負的 content 高度。這意味着對象必須在 CSS 中指定固定的高度。
因為有固定高度,或許你想給 content 指定 overflow:auto,這樣如果 content 太多的話,就會出現滾動條,以免content 溢出。
<div class="content"> Content goes here</div>
#content {
position: absolute;
top: 50%;
height: 240px;
margin-top: -120px; /* negative half of the height */
}
優點:
适用于所有浏覽器
不需要嵌套标簽
缺點:
沒有足夠空間時,content 會消失(類似div 在 body 内,當用戶縮小浏覽器窗口,滾動條不出現的情況)
方法2:
這種方法,在 content 元素外插入一個 div。設置此 div height:50%; margin-bottom:-contentheight;。
content 清除浮動,并顯示在中間。
<div id="floater">
<div id="content">Content here</div>
</div>
#floater {
float: left;
height: 50%;
margin-bottom: -120px;
}
#content {
clear: both;
height: 240px;
position: relative;
}
優點:
适用于所有浏覽器
沒有足夠空間時(例如:窗口縮小) content 不會被截斷,滾動條出現
缺點:
唯一我能想到的就是需要額外的空元素了(也沒那麼糟,又是另外一個話題)
方法3:
這個方法把一些 div 的顯示方式設置為表格,因此我們可以使用表格的 vertical-align property 屬性。
<div id="wrapper">
<div id="cell">
<div class="content">Content goes here</div>
</div>
</div>
#wrapper {
display: table;
}
#cell {
display: table-cell;
vertical-align: middle;
}
優點:
content 可以動态改變高度(不需在 CSS 中定義)。當 wrapper 裡沒有足夠空間時, content 不會被截斷
缺點:
Internet Explorer(甚至 IE8 beta)中無效,許多嵌套标簽(其實沒那麼糟糕,另一個專題)
方法4:
這個方法隻能将單行文本置中。隻需要簡單地把 line-height 設置為那個對象的 height 值就可以使文本居中了。
<div id="content"> Content here</div>
#content {
height: 100px;
line-height: 100px;
}
優點:
适用于所有浏覽器
無足夠空間時不會被截斷
缺點:
隻對文本有效(塊級元素無效)
多行時,斷詞比較糟糕
這個方法在小元素上非常有用,例如使按鈕文本或者單行文本居中。
哪個方法?
我最喜歡的是方法三,缺點不多。因為 content 會清除浮動,所以可以在它上面放置别的元素,并且當窗口縮放時,
居中的 content 不會把另外的元素蓋住。看例子。
<div id="top">
<h1>Title</h1>
</div>
<div id="floater"></div>
<div id="content">Content Here</div>
#floater {
float: left;
height: 50%;
margin-bottom: -120px;
}
#top {
float: right;
width: 100%;
text-align: center;
}
#content {
clear: both;
height: 240px;
position: relative;
}
方法5:
這個方法使用了一個 position:absolute,有固定寬度和高度的 div。這個 div 被設置為 top:0; bottom:0;。但是因為它有固定高度,其實并不能和上下都間距為 0,因此 margin:auto; 會使它居中。使用 margin:auto;使塊級元素垂直居中是很簡單的。
<div id="content"> Content here</div>
#content {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
height: 240px;
width: 70%;
}
優點::簡單
缺點:
IE(IE8 beta)中無效
無足夠空間時,content 被截斷,但是不會有滾動條出現
現在你知道是怎麼回事了,下節我們開始創建一個簡單但是有趣的網站。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!