• 締切済み

【CSS】divの中で縦方向の中央揃えは、どうやってかくのでしょうか?

すいません、divの中で縦方向の中央揃え、つまり、 divの代わりにtableタグの中のtdで書いた場合の、 <td valign="middle">ほげほげ</td> と同じことをdivで実現するにはどうすればいいのでしょうか? ご存じの方いらっしゃったら、よろしくお願いいたします。

  • ymck
  • お礼率69% (65/93)
  • HTML
  • 回答数2
  • ありがとう数2

みんなの回答

noname#66720
noname#66720
回答No.2

display:table-cell;はモダンブラウザ用にメインのCSSで書けば、上書きする必要はないのではないでしょうか。 display:inline;とzoom:1;のみie8未満に適用してやれば。 あと、条件付コメントを使う時には <!--[if IE]><style type="text/css"></style><![endif]--> という感じに、styleの外に書いてやらないとページの上部に空白ができることがあります。 それで<!--[if gt IE 7]>と記述した場合、実際に適用されるのはIE8.xからになります。 もし7.xが出る可能性を考慮に入れるのであれば<!--[if gt IE 7.0]>と記述すれば対応できます。

noname#66720
noname#66720
回答No.1

http://www.yomotsu.net/lab/css/alignmiddle ここのリンク先にくわしく書かれていますが、モダンブラウザにはdisplay:table-cell;、IEはバグ解釈を利用してdisplay:inline;とzoom:1;を適用します。 実際に使うときにはCSSハックよりは条件付コメントを利用されるほうがよいと思います。 http://www.respect-pal.jp/coding-text/tips/07.php おそらくIE8はdisplay:table-cell;に対応してくるので、IE8未満でスタイルを適用してください。

ymck
質問者

お礼

ご回答ありがとうございます。 で、以下のようにcssを記述してみたのですが疑問点が… //--- <div class="miya-vertical_align-wrapper">  <!--inside this div, vertical-align is avalable.-->  <div class="miya-vertical_align-middle">   中身中身中身・・・・・  </div>  <!--/inside this div, vertical-align is avalable.--> </div> //--- //--- div.miya-vertical_align-wrapper{ /*以下 (1)IEで、バージョンが7以下(7を含む)のものに対して適用 (2)IEで、バージョンが7より上(7は含まない)のものに対して適用 (3)IE以外に対して適用 の順。 */  <!--[if lte IE 7]>   display:inline;   zoom:1;  <![endif]-->    <!--[if gt IE 7]>   display:table-cell;  <![endif]-->  <!--[if !IE]>-->   display:table-cell;  <!--<![endif]--> } div.miya-vertical_align-wrapper div.miya-vertical_align-middle{  vertical-align:middle; } //--- 疑問点が2つあります (1)  将来もしIE バージョン 7.5 のようなものが現れたとして  その場合「IE バージョン 7.5 」は、  [if gt IE 7](バージョンが7より上(7は含まない)のものに対して適用)  の条件にあてはまってしまうのでしょうか?  もしあてはまってしまうとしたら、どう書きなおせば、対応できるでしょうか?   (※)   <!--[if lt IE 8]>    display:inline;    zoom:1;   <![endif]-->   「のように、IEのバージョンが8より小さい(8は含まない)」、という書き方ができれば、対応できるのですが、   http://journal.mycom.co.jp/special/2007/ie7/017.html   によると、「8」を書くことはできないようでして・・・。 (2)  <!--[if gt IE 7]>   display:table-cell;  <![endif]-->  <!--[if !IE]>-->   display:table-cell;  <!--<![endif]-->    の部分、冗長なのですがこうしかかきようがないでしょうか?     (※)   「else」が使えれば、解決できそうなのですが、検索しても、elseを使った例や解説が見つからず。 //--- 以上、よろしければお答えいただけると助かります。 よろしくお願いいたします。

関連するQ&A

  • DIVボックス内でのCSSを使用した縦位置指定方法

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

  • 縦に、中央揃えたい

    Xoopsのtinydモジュールを使ってますけど、 ページラップで、コンテンツを追加しました。内容がテープルの真ん中に設置しておきたいんですが、HTMLは、下のように書きました。 <table border="1" cellpadding="0" cellspacing="2" width="500" height="500"> <tr> <td valign="middle">  ←反映しない <div align="center">  ←これは大丈夫、使えます。 真ん中</div> </td> </tr> </table> Xoopsへアップしてみたら、どうしても 「真ん中」の文字が上揃いになってしまう。どうすればいいですか? ご存じの方がいっらしゃいましたら、どうぞお教え下さい。

    • ベストアンサー
    • HTML
  • css(div)の中にtableタグを使うとなぜかcellpaddingがきかない

    cssのdivの中にtableタグを入れ子にして作成していますが、中側tableのcellpaddingを5に指定しているにもかかわらず余白があきません。 過去ログにCSSの設計思想からすると、DIVの中にTABLE要素を組み込むことは論理矛盾であると書かれていましたが、複雑な表になってくると知識がないため、テーブルを使っているのが現状です。 なぜ余白があかないのでしょうか?また対応する方法はあれば教えていただきたいです。よろしくお願いします。 <div id="fee_table"> <table width="460" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#C4D6A7"><table width="460" border="0" cellspacing="1" cellpadding="5"> <tr> <td bgcolor="#FFFFCC">テキスト</td> <td valign="top" bgcolor="#FFFFFF">テキスト</td> </tr> <tr> <td bgcolor="#FFFFCC">テキスト</td> <td valign="top" bgcolor="#FFFFFF">テキスト</td> </tr> <tr> <td bgcolor="#FFFFCC">テキスト</td> <td valign="top" bgcolor="#FFFFFF">テキスト</td> </tr> </table></td> </tr> </table> </div> ■---css---------------------------------------■ #fee_table { font-size: 95%; margin : 10px 0 10px 15px; }

  • CSS(スタイルシート)で画像の縦サイズに合わせて、中央揃えで文字を表示したい。

    CSS(スタイルシート)で画像の縦サイズに合わせて、中央揃えで文字を表示したい。 スタイルシートで、画像の縦サイズに合わせて中央揃えで文字を表示したいのですが、 どのように記述したら良いのかわかりません。 下記のようにテーブルを使えば簡単に出来るのですが、 これをスタイルシートのみで表現するにはどのように記述すればいいのでしょうか? ちなみに左側画像の縦サイズは変わります。 よろしくお願いします。 ------------------------------------------------------------------- <html> <head> <title>CSS</title> <style type="text/css"> <!-- #waku { width: 451px; margin: 0; padding: 6px 8px 6px 8px; background-color: #008837; } --> </style> </head> <body> <div id="waku"> <table width="435" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="80"><img src="hoge.gif" width="80" height="変わります"></td> <td width="355" valign="middle">あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</td> </tr> </table> </div> </body> </html> -------------------------------------------------------------------

  • htmlで縦の中央揃えが上手くいきません。

    htmlで縦の中央揃えが上手くいきません。 vertical-align : middleでいけると思われるのですが、上手くいきません。 下記の部分です。 <div style="vertical-align : middle;"> <a href="http://www.yahoo.co.jp/"><img src="logo.png" /></a> &gt; <a href="http://okwave.jp">okwave</a> &gt; thispage </div> 何か間違えているでしょうか? それとも、テキスト以外は揃わないのでしょうか?

  • css:縦方向中央揃えについて

    HP制作初心者です。 現在自分のHPを作成しようとしているのですが、メニュー部分テキストについて 縦方向中央揃えが上手くできません。。 以下ソースなんですが、アドバイスいただけないでしょうか? 形としては、 blog profile portfolio が横並びで並ぶメニューを想定しています。 ◆html <div id="header"> <h1><img src="ロゴ画像" width="95" height="25" /></h1> <div id="gNav"> <ul> <li><a id="first" href="#">BLOG</a></li> <li><a id="second" href="#">PORTOFOLIO</a></li> <li><a id="third" href="#">PROFILE</a></li> </ul> </div> </div> ◆CSS #header h1 { width: 95px; height: 25px; margin:auto; } #gNav { width: 570px; height: 38px; margin: 0 auto; padding: 0; background-image: url(gNav背景.png); background-repeat: no-repeat; } #gNav li { text-align: center; float: left; } li #first { width: 105px; height:38px; background-image:url(#first背景.png); background-repeat:no-repeat; } ※#second,#thirdも#firstと同様です。 #gNav li a { vertical-align: middle; } 以上です。vertical-alignが効けば問題無いと思うのですが、 動作しません。display table-celとかも試しましたが、、、駄目です。 何か凄く根本的なところで間違っていると思うのですが、、、ご指摘頂けると 助かります。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • cssでテーブルを中央配置にするには?

    よろしくお願いします。 テーブルを中央配置にしたいのですが、 <center>、<div align="center">は、W3Cの非推奨タグであるため、代替方法として、<div style="text-align:center">を使用してみたのですが、うまくいきません。 <body> <div style="text-align:center"> <table> <tr> <td>あいうえお</td> </tr> </table> </div> </body> としたとき、WinXP IE6.xではテーブルが中央に配置されるのですが、WinXP Netscape 7.x では中央に配置されませんでした。どなたか解決策をご存知でしたらご教授願います。よろしくお願いします。

    • ベストアンサー
    • HTML
  • 縦の中央揃え

     縦方向の中央揃えはできないでしょうか?  つまりどういうことかと申しますと、 ---------←画面の一番上(アドレスバーの下) ↑ 文字A 文字B 文字C ↓ ---------←画面の一番下  ↑の長さと、↓の長さを同じになるように設定したいのですが・・・。  なにか良いタグはないでしょうか? (説明が下手で申し訳ありませんが・・・。)

    • ベストアンサー
    • HTML
  • CSSでdiv内を下揃え

    CSSでdiv内を下揃えは出来ないものでしょうか? テーブルを使った時の以下の表現をCSSで表現したいです。 <TABLE border="0" height="200"> <TR> <TD>ここは上から●pxに画像配置</TD> </TR>  <TR> <TD valign="bottom">ここを下揃えで画像表示</TD> </TR> </TABLE> テーブルならすぐできるのですが… 下揃えの方法があれば教えてください。

    • ベストアンサー
    • CSS
  • 縦方向の位置決め

    何故か<td>の中の文字が上に寄っているんです。 こういう時、物の本によると、vertical-align属性とかvalign属性とかを使うそうです。 で、使ってみたんですけど、何も変わらないのは何故? すみません。教えてください。 ***************************************** <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title></title> <style type="text/css"> <!-- *{ font-size: 12px; font-weight: normal; } body { width: 476px; } img { float: left; } h1 {margin: 0px; } h2 {float: left; font-weight: bold; } .divTitle { border: 1px solid #999999; } .divTitle tr { vertical-align: middle; } .date {float: right; } --> </style> </head> <body> <table class=divTitle width="476" cellpadding="0" cellspacing="0"> <tr valign="middle"> <td> <img src="img/w_name.gif" width="80" height="23" alt="投稿者"> <h2>관리자</h2> <div class="date">(2009-04-26 13:47:39, Hit : 6, Vote : 0)</div> </td> </tr> <tr> <td height="24" valign="top"> <img src="img/w_subject.gif" width="80" height="23" alt="タイトル"> <h3>[re] 다시 문의요-</h3> </td> </tr> </table> </body> </html>

    • ベストアンサー
    • HTML

専門家に質問してみよう