• ベストアンサー

<div align="center">を使わずにCSSだけでセンター表示する方法?

現在、CSSでホームページを作っているのですが、IEではうまくセンター表示できるのですが、firefoxなどでは左によってしまいます。 bodyに<div align="center">を記載せずにCSSだけでセンターに表示させることは出来ないものでしょうか?ちなみにIEでセンターによってしまうのはバグだと聞いたことがあるのですが、本当でしょうか? よろしくお願いします。

  • HTML
  • 回答数3
  • ありがとう数30

質問者が選んだベストアンサー

  • ベストアンサー
  • pingu98
  • ベストアンサー率62% (17/27)
回答No.2

まぁ、MozillaとIEで表示が違えば大抵IEのバグですが、IEが正解でMozillaが違ってる場合もあります。 今回の件は具体的にどんなんだかわからないので分かりません。 で、基本的なCSSでのセンタリングですが、例えばブロック要素を真ん中に持ってくる場合は、その真ん中に持ってきたいブロック要素自身のマージンでセンタリングします。 例えば、 <div style="width:100px; margin:0 auto 0 auto;">まんなかです</div> とすると、こいつは親要素に対して左右均等のマージンを取る。つまりセンタリングされます。 ブロック要素の中のテキストやインライン要素をセンタリングするにはtext-alignを使います。 <div style="width:100px; text-align:center;">まんなかです</div> それと、注意したいのは、一行目の文頭に<!DOCTYPE~>を書かないとIEは互換モードでレンダリングしだしますので、CSS解釈も(ますます)変になりますのでご注意を。 こんな感じで。 No.1の方のサイト、参考になりますよ。私も昔これ見て勉強しました(笑)。

404not_found
質問者

お礼

pingu98さん有難うございます。 ><div style="width:100px; margin:0 auto 0 auto;">まんなかです</div> とすると、こいつは親要素に対して左右均等のマージンを取る。つまりセンタリングされます。 私ははじめて知りました。有難うございます。 >それと、注意したいのは、一行目の文頭に<!DOCTYPE~>を書かないとIEは互換モードでレンダリングしだしますので、CSS解釈も(ますます)変になりますのでご注意を。 やはりDOCTYPEはきちんと記載しなければいけないのですね。 >No.1の方のサイト、参考になりますよ。私も昔これ見て勉強しました(笑)。 私も参考にさせていただきました。

その他の回答 (2)

  • ao_
  • ベストアンサー率33% (15/45)
回答No.3

No.2の方の言う通りmarginの左右にautoを設定するとその親要素に対してセンターになります。 ただし、IE5.5やIE5ではautoが対応になっていないので、autoを設定したdiv自体にtext-align:leftを付け加え、さらにその親要素にtext-align:centerを設定すれば完璧です。

404not_found
質問者

お礼

ao_さん有難うございます。 >ただし、IE5.5やIE5ではautoが対応になっていないので、autoを設定したdiv自体にtext-align:leftを付け加え、さらにその親要素にtext-align:centerを設定すれば完璧です。 なるほど、バージョンによって対応状況がかなり違うんですね。 何かキチンとした基準が全てのブラウザに統一して適用できないものなのでしょうか・・・?

  • SpiceGirl
  • ベストアンサー率69% (493/713)
回答No.1

具体的にソースが無いのでなんともですが 一応参考として ブロックレベル要素をセンタリングする方法 - Web標準普及プロジェクト http://www.mozilla.gr.jp/standards/webtips0004.html

参考URL:
http://www.mozilla.gr.jp/standards/webtips0004.html
404not_found
質問者

お礼

SpiceGirlさん、大変参考になるURLを有難うございます。 左右のマージンを0pxにすることで対応が出来ました!

関連するQ&A

  • CSS・DIVについて

    CSS初心者ですが、質問させていただきます。 <やりたいこと> 同一ページ内にて、下記の(1)(2)をCSSで指定したい。上から(1)(2)(1)の順で表示したい。 (1)幅700、文章中央揃え (2)幅600、文章左揃え <私が作成したもの> (関係ない部分は省略しています。) (実際は、(1)(2)の部分は半角英字の名前をつけています) <head> <style type="text/css"> body { text-align: center; } div#(1) { width: 700px; margin: 0 auto; text-align: center;       } div#(2) { width: 600px; margin: 0 auto; text-align: left; } </style> </head> <body> <div id="(1)">タイトル</div> <div id="(2)">説明文</div> <div id="(1)">ホームに戻る</div> </body> <表示のされ方> (1)は正常に表示されているのですが、(2)にはCSS自体が適用されていないのです。 ちなみにIE9では私の思うように表示されるのですが、IE10になって表示されなくなりました。 なぜこのようになったか、お教えいただけますでしょうか。よろしくお願いいたします。

    • 締切済み
    • CSS
  • CSSのセンタリングが、「div」で何故か出来ない

    下記のアドレスのホームページについてです。 http://sky.geocities.jp/thanksv0358/index.html# HTMLで、 <body> <div id="main"> ~ </div> </body> とし、CSSで #main{ text-align:center; margin-left:auto; margin-right:auto; text-align:left; } としたにもかかわらず、何故かセンタリングができません。 今回、最初の<!DOCTYPE~の部分から全部、自分で書いてみました。 詳しい方がいましたら、よろしくお願いします。

  • IE8ではtext-align: center;でdivタグが中央にならない。改善策は?

    IE8ではtext-align: center;でdivタグ又はbodyが中央にならなくなってしまったので、修正方法を探していたところ、以下の質問・回答履歴を見つけました。 http://oshiete1.watch.impress.co.jp/qa4989799.html 上記の回答履歴では最終的にNo.6さんの以下の回答で問題が解決されています。 CSSでは以下のように記述: div.center { width: 80%; margin-right: auto; margin-left: auto; } HTMLではセンタリングさせたいdiv要素を以下のように記述: <div class="center">文章等<div> <質問1> ここで私の質問ですが、なぜ上記の回答では<div class="center">文章等<div> を中央に表示するためにCSSにwidth: 80%;が必要なのでしょうか(width: 80%はdivタグのセンタリングには特に必要ないのですか?なぜ、width: 80%が記述されているのか分かりません。)?この80%という値はどこから導き出されたのでしょうか(なぜ、例えば60%、70%等ではだめなのですか?)? また、bodyタグをセンタリングしたい場合は、どうですか?CSSにwidth: 80%;が必要なのでしょうか? <質問2> 「margin-right: auto;とmargin-left: auto;」以外にもmargin:0 autoという方法が他のサイトで紹介されていましたが、「margin-right: auto;とmargin-left: auto;」を使用した場合とmargin:0 autoを使用した場合の表示結果は全く同じなのでしょうか?margin:0 autoの場合、上下のマージンも0(無し)となるので、その点で上下のマージンを指定していない「margin-right: auto;とmargin-left: auto;」と異なるように思いますが?「margin-right: auto;とmargin-left: auto;」又はmargin:0 autoを使用する場合、他方を使用することに比べてメリット及びデメリットはあるのでしょうか? また、もしも、「margin-right: auto;とmargin-left: auto;」の代わりにmargin:0 autoを使用する場合、記述は以下で正しいのでしょうか? <divタグをセンタリングしたい場合> CSSでは以下のように記述: div.center { width: 80%; margin:0 auto } 上記の記述で div.center { width: 80%; margin-right: auto; margin-left: auto; } と全く同じ表示になるのでしょうか? <bodyタグをセンタリングしたい場合> CSSでは以下のように記述: body { width: 80%; margin:0 auto } 上記の記述で body { width: 80%; margin-right: auto; margin-left: auto; } と全く同じ表示になるのでしょうか? <質問3> IE6又はそれ以前のIEは、「margin-right: auto;とmargin-left: auto;」又はmargin:0 autoではDivタグをセンタリングできず、text-align: center;を使用する必要あったような記憶があります。IE7/8に加えてIE6又はそれ以前のIEにおいても<div class="center">文章等<div>をセンタリングしたい場合、どのような記述となりますか? 以下のように「margin-right: auto;とmargin-left: auto;」又はmargin:0 autoをtext-align: center;と同じ場所に記述する方法はうまくいかないようですが。私の記述方法が悪いだけですか? { text-align: center; margin-right: auto; margin-left: auto; } 又は { text-align: center; margin:0 auto; } 関連サイト等あれば、そちらも教えてください。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • CSSのDIV要素

    CSSのDIV要素を使ってボックスを作ったんですが、 外部スタイルシートに書き込んで、下記のようにする方法はありませんか? <center> <DIV align="left"> </DIV> </center> ボックス本体を画面の中央に持っていき、内容は左揃えにしたいのです。 どなたか知っている方がいましたら、教えてください。

    • ベストアンサー
    • HTML
  • text-align centerの違い

    div内にリンクを書くとセンターを基準に表示されるのですが div内にulとliでメニューを組むとセンターを基準に表示されず 左を基準に表示されてしまうのですがどのようにすれば いいものでしょうか? ---CSS--- #hoge { width: 1000px; text-align: center; background: #fff; } ---HTML--- ↓この場合センター表示されます。 <div id="hoge"> <a href="#">hoge</a> </div> ↓この場合センター表示されず左を基準に表示されます。 <div id="hoge"> <ul> <li><a href="#">hoge</a></li> </ul> </div>

    • ベストアンサー
    • HTML
  • FireFox2.0でCSSを使ってテーブルそのものをセンタリングしたい

    IE6だと #wrapper { text-align: center; } <div id="wrapper"> <TABLE border="1"> <tr><td>テキスト</td></tr> </table> </div> とやればテーブルそのものがセンタリングされるのですが、 FireFox2.0だと左に寄ったままです。 CSSを使わずに<center>で囲めばセンタリングされますが、 そうではなくてCSSを使ってやるやり方はないでしょうか?

    • ベストアンサー
    • HTML
  • divを真中にもってくる方法などソースについて

    画面の中心にdivをもってきて、ちなみに上と下は100%にしたいです。上下には余白なし。 cssはheadに書く方法で、このソースは何がいけないのか、教えていただけたら助かります。 ちゃんと最初にdoctypeも書いてます。 <head> <style type="text/css"> div{height:100%;margin:0 auto 0 auto;} </style> </head> <body> <div></div> </body> まずdivがセンターにならないです。 余白も0にならないので、 cssの部分で body{margin:0;} body でマージンを0にすると、divは余白0になりますが、 センターにはいかないのです。 申し訳ありません。いろいろほかの方質問を参考にしましたが、できませんでした。 div align=centerもうまくいかなかった・・・

    • ベストアンサー
    • HTML
  • CSSメニューボタンのセンター配置

    ホームページに、CSSで作る横並びメニューボタンを作りました。ボタンの下のコンテンツには{clear : both}を入れ回り込みを解除しました。ここまではよかったのですが、表示をみると、メニューボタン全体、その下のコンテンツともページの左揃えになっています。メニューボタン全体と、その下のコンテンツを中央揃えにするにはどうしたらいいでしょうか? それぞれを<div align=center></div>でかこってもセンターになってくれません。よろしくお願いします。

  • ★CSS★

    CSSについて質問です。 firefoxでは下記を記載し、たてよこの真ん中に表示することができました。 IEではセンターにすることはできましたが、ミドルにすることができませんでした。 display:table-cell; が効かないのでしょうか? IEでもミドルにできる方法を教えてください。 .imgs{ display:table-cell; height: 160px; width: 160px; text-align:center; vertical-align:middle; } <div class="imgs"> <a class="aaa" href="./pop.php> <img class="imgtf" id="imgtf" alt="タイトル" src="images/thumbnail/eee.jpg"> </a> </div> よろしくお願いします。

    • ベストアンサー
    • CSS
  • テーブルとDIVとCSSについて質問です。

    テーブルとDIVとCSSについて質問です。 テーブルタグのtdにdivで、写真を入れたい(写真の周りにdivで枠の飾りみたいのをつけたいから)です。 その下に、CSSで定義した文字を入れたいのですが、 tdが横に2つ(=つまり、写真が2つ並ぶ)と、左の写真の下の文字を3行にし、 右の写真を下の文字を2行にすると、縦の中央になってしまい、 右が少し下にきてしまいます。 どう、定義したらいいでしょうか? また、その文字らを、text-align="center"でCSSで定義しても、 デザインですとセンターに見えても、ブラウザでみると、左揃えによってしまいます。 どう書いたらいいか、あわせて教えてください。 また、tableにdivを入れたらダメの場合は、どうやったら、いいか教えて下さい。 よろしくお願いします。

専門家に質問してみよう