質問

CSSにてheight、weightを指定したDIVタグの中にテキストを記述し、縦位置の中央揃えを行いたいのですが、方法がわかりません。
"vertical-align:middle;"などを指定しましたが、適用されませんでした。
スタイルに関することは全てCSSで行いたいので、TABLEタグなどでvalignを指定する方法は取りたくありません。
何かいい方法をご存知の方がいらっしゃいましたら、ご回答をよろしくお願いいたします。

通報する

回答 (5件)

<div>要素に、IDかclass属性を、持たせ、text-align:center;を記述する。

box1 {width:200px;height:150px;text-aligen:center;border:solid 1px #999;}

width と height が指定されているのならば簡単です。
padding,marginの指定がDIVにされていないならば、ブラウザでくずれる心配もまずありません。標準モードにしておくほうが無難だと思いますが。。。


方法は、
position:relative; top:50%;
を指定した後で
margin-top: -(heightの半分のピクセル);
マイナス指定して、半分もどしてあげます。
しかし、中にいれるテキストの長さ、大きさが動的に変わるとなると少しややこしくなります。

ちなみに、vertival-align指定はテーブルにのみ適応されます。
つまり、外枠にひとつテーブルをつくり、そのtdにvertical-align指定をすれば一番すっきり解決されます。テーブルそのものを使いたくない場合は、手間ひまかけるしかありません。

強引な方法なのかもしれませんが、position:relative;で真ん中あたりに配置できます。
この場合の移動距離は親要素の高さに依存しますから、標準的なブラウザであれば問題ないと思います。

<div style="border:red 2px solid;width:200px;height:200px;">
<span style="position:relative;top:50%;left:0px;">test</span>
</div>

line-heightを使った方法があります。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>テスト</title>
</head>
<body>
<div style="border:#000000 1px dotted;width:256px;height:256px;text-align:center;line-height:256px;">これはテストです。</div>
</body>
</html>

heightを%で指定したければ、padding:50% 0% 50% 0%;という方法もあります。

が、いずれも完璧ではありません。ちょっとしたことでレイアウトが崩れてしまいます。使用の際はご注意を…。

cssの解釈の問題の様なのですが、残念ながら
IEにはそのような設定方法がなさそうです。
たとえばFFなどだとdisplay:table-cellを指定
するとvertical-alignを有効にできます。

テーブルが嫌なら素直にあきらめてください

<style>
div.x{
width:300;
height:200;
background-color:blue;
display:table-cell;
vertical-align: middle;
}
</style>
<body>
<div class="x">
test<br>
test<br>
test<br>
</div>
</body>

このQ&Aは役に立ちましたか?13 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

注目の記事

おしトピにAndroid版アプリが登場

話題のトピックにさくっとコメントできる「おしトピ」に Android版アプリが登場! もっと身近に使いやすくなりました。


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ

べんりQ&A特集