元素:
div#wrap {
height:400px;
display:table;
}
div#content {
vertical-align:middle;
display:table-cell;
border:1px solid #FF0099;
background-color:#FFCCFF;
width:760px;
}
多行文字实现垂直居中 body { font-size:12px;font-family:tahoma;}
div#wrap {
height:400px;
display:table;
}
div#content {
vertical-align:middle;
display:table-cell;
border:1px solid #FF0099;
background-color:#FFCCFF;
width:760px;
}
现在我们要使这段文字垂直居中显示! Webjx.Com</p> <p>div#wrap {</p> <p>height:400px;</p> <p>display:table;</p> <p>}</p> <p>div#content {</p> <p>vertical-align:middle;</p> <p>display:table-cell;</p> <p>border:1px solid #FF0099;</p> <p>background-color:#FFCCFF;</p> <p>width:760px;</p> <p>}</p> <p>
这个方法应该是很理想了,但是不幸的是Internet Explorer 6 并不能正确地理解display:table和display:table-cell,因此这种方法在
Internet Explorer 6及以下的版本中是无效的。嗯,这让人很郁闷!不过我们还其它的办法四、在Internet Explorer中的解决方案
在Internet Explorer 6及以下版本中,在高度的计算上存在着缺陷的。在Internet Explorer 6中对父元素进行定位后,如果再对子元素
进行百分比计算时,计算的基础似乎是有继承性的(如果定位的数值是绝对数值没有这个问题,但是使用百分比计算的基础将不再是该元素的
高度,而从父元素继承来的定位高度)。例如,我们有下面这样一个(X)HTML代码段:
如果我们对subwrap进行了绝对定位,那么content也会继承了这个这个属性,虽然它不会在页面中马上显示出来,但是如果再对content进
行相对定位的时候,你使用的100%分比将不再是content原有的高度。例如,我们设定了subwrap的position为40%,我们如果想使content的上
边缘和wrap重合的话就必须设置top:-80%;那么,如果我们设定subwrap的top:50%的话,我们必须使用100%才能使content回到原来的位置上去
,但是如果我们把content也设置50%呢?那么它就正好垂直居中了。所以我们可以使用这中方法来实现Internet Explorer 6中的垂直居中:
div#wrap {
border:1px solid #FF0099;
background-color:#FFCCFF;
width:760px;
height:400px;
position:relative;
}
div#subwrap {
position:absolute;
border:1px solid #000;
top:50%;
}
div#content {
border:1px solid #000;
position:relative;
top:-50%;
}
当然,这段代码只能在Internet Exlporer 6等计算存在问题的浏览器中才会有作用。(不过我不解,我查阅了很多文章,不知道是因为出
处相同还是什么原因,似乎很多人都不愿意去解释Internet Exlporer 6中这这个Bug的原理,我也只是了解了一点皮毛,还要再研究)
多行文字实现垂直居中 body { font-size:12px;font-family:tahoma;}
div#wrap {
border:1px solid #FF0099;
background-color:#FFCCFF;
width:760px;
height:400px;
position:relative;
}
div#subwrap {
position:absolute;
top:50%;
}
div#content {
position:relative;
top:-50%;
}
现在我们要使这段文字垂直居中显示!</p> <p>div#wrap {</p> <p>border:1px solid #FF0099;</p> <p>background-color:#FFCCFF;</p> <p>width:760px;</p> <p>height:500px;</p> <p>position:relative;</p> <p>}</p> <p>div#subwrap {</p> <p>position:absolute;</p> <p>border:1px solid #000;</p> <p>top:50%;</p> <p>}</p> <p>div#content {</p> <p>border:1px solid #000;</p> <p>position:relative;</p> <p>top:-50%;</p> <p>}
5. 完璧な解決策
次に、上記の 2 つを組み合わせてみましょう。この方法を使用すると完璧な解決策を得ることができますが、これには CSS ハックの知識が必要です。 CSS ハックを使用してブラウザを区別する場合は、
この記事「簡単な CSS ハック: IE6、IE7、IE8、Firefox、Opera を区別する」を参照してください:
div# Wrap {
表示:テーブル;
ボーダー:1px ソリッド
背景色:#FFCCFF;
幅:760px;
高さ:400px;
_position:relative;
}
div#subwrap { >vertical-align:middle ;
表示:テーブルセル;
_top:50%;
_position:相対;
_top:-50%;
}
この時点で、完璧なセンタリング ソリューションが生成されます。
複数行のテキストを縦方向に中央揃え
次に、このテキストを垂直方向の中央に配置したいと思います。 <p> </p>div#wrap {<p> </p>border:1px Solid #FF0099;<p> </p>background-color:#FFCCFF;<p> </p>width:760px;<p> </p>height:500px;<p> </p>position:relative;<p> </p>}<p> </p>div#subwrap {<p> </p>position:absolute;<p> </p>border :1px ソリッド #000;<p> </p>top:50%;<p> </p>}<p> </p>div#content {<p> </p>border:1px ソリッド #000;<p> </p>position:relative;<p> </p>top:-50%;<p> </p>}
< /div>