DIVを使用してテキストを水平方向および垂直方向に単純に中央に配置し、表セルとして表示タイプを使用しようとしていますが、IE8またはFirefoxで機能していません。
以下は私が使用しているCSSであり、htmlページにあるのはそれだけです。
@charset "utf-8";
/* CSS Document */
html, body
{
background-color:#FFFFFF;
font-family:Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
padding-top: 5px;
}
div.Main
{
background-color:#FFFFFF;
border-collapse:collapse;
width:800px;
margin-left:auto;
margin-right:auto;
}
div.MainHeader
{
color:#C00000;
font-size:18pt;
font-weight:bold;
text-align:center;
width:800px;
}
div.BlackBox
{
background-color:#000000;
color:#FFFF00;
display:table-cell;
float:left;
font-size:18pt;
font-weight:bold;
height:191px;
text-align:center;
vertical-align:middle;
width:630px;
}
div.BlackBoxPicture
{
background-color:#000000;
float:right;
height:191px;
margin-top:auto;
margin-bottom:auto;
text-align:right;
vertical-align:bottom;
width:170px;
}
私は何を間違えていますか?
table-cell
には親display:table
要素が必要だと思います。
これは私がそれを行う方法です:
CSS:
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
display: table
}
#content {
display: table-cell;
text-align: center;
vertical-align: middle
}
HTML:
<div id="content">
Content goes here
</div>
見る
そして
CSS:中央揃え 。
あなたはcanIE 6+で動作するようにフロートされた要素を垂直に整列させることができます。完全なテーブルマークアップも必要ありません。このメソッドは完全にきれいではありません-ラッパーが含まれており、注意すべきことがいくつかあります。コンテナからあふれるテキストが多すぎる場合-しかし、それはかなり良いです。
短い答え:display: table-cell
を要素に適用するだけですinsidefloated element (テーブルのセルはフロートしません)、古いIEの場合はposition: absolute
およびtop
でフォールバックを使用します。
長答:ここに jsfiddleの基本を示す があります。重要なものの要約(.old-ieクラスを追加する条件付きコメント付き):
.wrap {
float: left;
height: 100px; /* any fixed amount */
}
.wrap2 {
height: inherit;
}
.content {
display: table-cell;
height: inherit;
vertical-align: middle;
}
.old-ie .wrap{
position: relative;
}
.old-ie .wrap2 {
position: absolute;
top: 50%;
}
.old-ie .content {
position: relative;
top: -50%;
display: block;
}
以下は jsfiddleが意図的に軽微な障害を強調している このメソッドでの例です。方法に注意してください:
overflow: auto;
などのオーバーフローメソッドはしないでください。動作するようです)これらはかなり小さな制限ですが、知っておく価値があります。
次のスタイルの要素は、中央に垂直に配置されます。
.content{
position:relative;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
top:50%;
}
ただし、親要素の高さは固定する必要があります。このフィドルを参照してください: https://jsfiddle.net/15d0qfdg/12/
私の場合、親コンテナの位置を絶対位置にしたかったのです。
<div class="absolute-container">
<div class="parent-container">
<div class="centered-content">
My content
</div>
</div>
</div>
上下左右にいくつかの位置を追加する必要がありました。
.absolute-container {
position:absolute;
top:0;
left:0;
bottom:0;
right:0;
}
.parent-container {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
display: table
}
.centered-content {
display: table-cell;
text-align: center;
vertical-align: middle
}
このビンを参照してください: http://jsbin.com/yacom/2/edit
親要素を設定する必要があります
display:table-cell;
vertical-align:middle;
text-align:center;
あなたはまだフロートを使用しているため...
「float」を削除して、display:tableでラップしようとします
例:
<div style="display:table">
<div style="display:table-cell;vertical-align:middle;text-align:center">
Hai i'm center here Lol
</div>
</div>
いつかフロートが垂直方向の整列にブレーキをかけるので、避けるのが良いでしょう。
display: table;
を使用せずに別のラッパーでフロートします。動作します:
<div style="float: right;">
<div style="display: table-cell; vertical-align: middle; width: 50%; height: 50%;">I am vertically aligned on your right! ^^</div>
</div>
親要素の高さを設定します。