私はdiv
30px
高くて500px
広いです。これdiv
には、上下に2行のテキストを含めることができ、それに応じてスタイル(パディング)されます。ただし、1行しかない場合もあるので、中央に配置したい。これは可能ですか?
13 に答える
水平方向に中央揃えするには、を使用しますtext-align:center
。
vertical-align:middle
垂直方向の中央に配置するには、配置先の同じ行に別の要素がある場合にのみ使用できます。ここ
で動作するのを見てください。
高さ100%の空のスパンを使用してから、vertical-align:middleを使用してコンテンツを次の要素に配置します。
テーブルセルを使用したり、上、下、左、右をすべてゼロに設定した絶対位置の要素にコンテンツを配置したりするなど、他の手法もありますが、これらはすべてブラウザ間の互換性の問題に悩まされています。
テキストを、水平方向(のみ)ではなく、div内の垂直方向の中央に配置する必要があると思います。これを行うために私が知っている唯一の信頼できる方法は、以下を使用することです。
display: table-cell;
vertical-align: middle;
あなたのdivで、そしてそれは任意の数の行で動作します。ここでテストを見ることができます:http://jsfiddle.net/qMtZV/1/
IE7以前ではサポートされていないため、このプロパティのブラウザサポートを必ず確認してください。
更新2016年2月10日
5年後もこの手法は有効ですが、この問題にはより優れた、より確実な解決策があると思います。現在、Flexboxのサポートは優れているため、 http : //codepen.io/michelegera/pen/gPZpqEに沿って何かを実行することをお勧めします。
HTML
<div class="outside">
<div class="inside">
<p>Centered Text</p>
</div>
</div>
CSS
.outside {
position: absolute;
display: table;
}
.inside {
display: table-cell;
vertical-align: middle;
text-align: center;
}
内にテキストがある場合<div>
:
text-align: center;
vertical-align: middle;
display: table-cell;
親divには、次のCSSを使用します。
style="display: flex;align-items: center;"
div {
height: 256px;
width: 256px;
display: table-cell;
text-align: center;
line-height: 256px;
}
秘訣は、のにline-height
等しい値を設定することheight
ですdiv
。
CSSでプロパティvertical-alignを使用して、垂直方向に中央揃えにすることができます。
div {
vertical-align:middle;
}
サイズの問題である場合は、2つのテキスト行とパディングスタイルの高さが30pxを超える可能性が高いことに注意してください。
たとえば、フォントサイズが12ピクセルで、divのパディングが5ピクセルの場合、1テキスト行のdivの高さは5ピクセル(パディング-上)+ 12px + 5ピクセル(パディング-下)= 22px <30pxになるため、問題ありません。
2テキスト行のdivの場合、5px + 12px * 2(2行)+ 5px = 34px> 30pxになり、divの高さが自動的に変更されます。
divの高さ(おそらく40px)を増やすか、パディングを減らしてみてください。
それが役立つことを願っています
行の高さを追加することも役立ちます。
text-align: center;
line-height: 18px; /* for example. */
ここで何かが足りないかもしれませんが、試してみましたか?
text-align:center;
??
これはあなたのために働きますか?
div { text-align: center; }
私は周りを見回しました
display: table-cell;
vertical-align: middle;
最も人気のあるソリューションのようです
display: block;
text-align: center;
テキストを含むセレクターに追加します
margin:auto;