• ベストアンサー

CSSでのブロックレイアウトがうまく確認出来ません!!

かれこれ三時間が過ぎてしまいました。 現在CSSを使ってブロックレイアウトをしているのですが、なかなかうまく行きません!ブラウザごとに違って見えちゃいます。 質問1です。 上から3つのブロックを作っています。 ブロックごとにボーダーの色などを指定するのですが、ブラウザによって表示が違ってしまいます。ボーダーなどの指定ってブラウザによって非推奨とかあるのでしょうか? 質問2です。 こちらもブラウザの問題なのですが、InternetExplorerだときちんと中央に表示されるのですが、netscapeなどでは左によってしまいます。ブロックなどの表示位置をCSSで指定できないのでしょうか?やはりHTML部分に、直接センター表示を明記した方がいいのでしょうか? 宜しくお願いします。

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

  • ベストアンサー
  • coder
  • ベストアンサー率50% (3/6)
回答No.5

えと、これは単に<br>です。 それにスタイルシートでclear:bothしてるだけ。 ただこれははっきり言っちゃうと文法違反です。 clear:bothはブロックレベルにしか使えない(BRはインライン)んだけど、上手く表示されちゃうので結果オーライみたいな。 あとは、空のdivを作ってそこでfloatをクリアしたりとかでもできる。 ようは、floatしてるブロックレベルの後に、floatしてないものがあって、そこでfloatをクリアするということです。 たぶん、これでも良く分からないなら、本を買って勉強した方がいいです。 スタイルシートはまだまだ理屈では上手くいかない部分やブラウザ対応が必要ですし、HTMLの知識もしっかりしたものがないと組めません。 cssも辞書なくてもすらすら手書きできるくらいがベストです。 頑張ってね。

yuyukina
質問者

お礼

coderさん本当に有難うございました。 CSSもまだまだ発展中ですし、追いかけるのが精一杯です。色々分からないことが沢山ありますが、がんばって勉強していきたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • coder
  • ベストアンサー率50% (3/6)
回答No.4

1.「borderについて」 borerは初期設定では「none」になってますので、0であるならばいらないです。 --------------------------------------- 2.「float時の背景について」 例えば、 <div style="width:500px;background:#cccccc;"> <div style="float:left;width:300px">左側</div> <div style="float:right;width:200px">右側</div> </div> これだと、最初のDivの背景がしっかりと続いてくれないですよね?この理由というのは、 「必要な高さ算出に参考にするのはfloatしていないインライン要素とブロックレベル要素の高さであるということです。」だからなんです。 だからfloatされた左のDivと右のDivが親要素であるDIVの高さに影響を与えることができず、#000000の背景がfloatしたdivの下端まで伸びないんです。 これを解決するには、 <div style="width:500px;background:#cccccc;"> <div style="float:left;width:300px">左側</div> <div style="float:right;width:200px">右側</div> <br style="clear:both;"> </div> みたいにfloatの後にbrでclear:bothしてください。こうやってfloatを解除してあげないければ親要素の背景は流れないんです。

yuyukina
質問者

お礼

coderさん、本当にたびたびありがとうございます。 >これだと、最初のDivの背景がしっかりと続いてくれないですよね? まさに、その通りです・・・、 >「必要な高さ算出に参考にするのはfloatしていないインライン要素とブロックレベル要素の高さであるということです。」だからなんです。 こんな暗黙があったなんて、全然知りませんでした。 ちなみに<br style="clear:both;"></div>こんなタグもはじめてみました。brって強制開改行のbrなんでしょうか??不思議なタグです。 もう少し調べてみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • coder
  • ベストアンサー率50% (3/6)
回答No.3

なんかちょっと↓で誤解をまねく書きかたしてしまったので訂正。text-alignは、インライン要素に対しての指定です。 あと、忘れてた。borderは1pxって指定すれば太さはダイジョブだと、思う。。 このborderで気をつけること。~IE5.5以前では、borderやpadding、marginに0以外の値を設定すると、他のブラウザと幅の計算の仕方が変わってきます。 詳しくはネットで、ボックスとか検索するといっぱいヒットすると思うから、調べてみて。 あと、いくつか気づいた点。 1)operaのボディの余白は、marginとpaddingを共に0にしないと消えません。なので、bodyの余白の指定は、必ずmargin:0;padding:0;みたいにして下さい。 2)floatしたものや絶対配置したものを親要素(入れ子にしてるおおもと)の中に入れても、親要素の高さに影響しません。つまりこのままでは上手くborderあるいは背景が流れません。floatしたものの後にfloatしないものが来ない場合は、だからfloatしたやつの最後に<br style="clear:both">って入れてください。それでダイジョブ。 3)footerのところ。floatを解除なら、clear:bothなり、clear:leftを入れよう。

参考URL:
http://www.mozilla.gr.jp/standards/webtips/index.html
yuyukina
質問者

お礼

coderさん、ご丁寧にありがとう御座います。 >このborderで気をつけること。~IE5.5以前では、borderやpadding、marginに0以外の値を設定すると、他のブラウザと幅の計算の仕方が変わってきます。 なるほど、そのような決まりがあるのですね!ボーダーを使わないレイアウトでも背景と同系色でボーダーを指定しておいた方がいいのでしょうか? >1)operaのボディの余白は、marginとpaddingを共に0にしないと消えません。なので、bodyの余白の指定は、必ずmargin:0;padding:0;みたいにして下さい。 operaですか、対象にしたことも無かったのですがこれからは気にしてチェックしてみたいと思います。 >だからfloatしたやつの最後に<br style="clear:both">って入れてください。それでダイジョブ。 すみません、ここのところがよく分からないのですが・・・、確かに現在ではfirefoxでみると親のボックスmainboxの高さがつぶれて変な表示になっています。 具体的に、"clear:both"はどこに入れたら良いのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • coder
  • ベストアンサー率50% (3/6)
回答No.2

text-align:centerというのは、そもそもブロックレベル要素の位置指定をするのに使うものでは、ありません。テキストを真中揃えしたりするのに使うものです。IEが真中によってしまうのは、IEのバグです。 その他のブラウザでも真中寄せするには、bodyに今回のようにtext-align:center; さらに真中寄せするdiv(bannerとmainbox)に対して、marign:0 auto;みたいな形で、左右のmarginを共にautoにして下さい。これで寄ります。 ちなみにCSSデザインをするなら、まず検証の基準ブラウザにIEを使うのをやめるべきです。IEはミスに対して寛大すぎるので、今回のような間違った記述でもうまくいってしまいます。その結果他のブラウザはめちゃめちゃってなってしまいます。第一の検証はfirefoxとか最近のブラウザを使い、その上で、最後にIE検証がベストだと思います。 あとcssデザインだと、どうしても理屈ではないエラーも出てきます。ですので、それぞれのブラウザにだけ適用させるという方法も必要になってきます。 例えば、~IE5.5とIE6(互換モード)は、ボックスの概念というCSSには欠かせないものを間違えて解釈しています。その為にIE5.5だけにCSSを適用させる方法も必要になってきます。その辺も勉強しないと、ブラウザごとにずれが出るかと思います。

yuyukina
質問者

お礼

coderさん、ありがとう御座います。 >text-align:centerというのは、そもそもブロックレベル要素の位置指定をするのに使うものでは、ありません。テキストを真中揃えしたりするのに使うものです。IEが真中によってしまうのは、IEのバグです。 そうですか・・、バグなんですね。初めてしりました。私はバグに合わせていたんですね。 >bodyに今回のようにtext-align:center; さらに真中寄せするdiv(bannerとmainbox)に対して、marign:0 auto;みたいな形で、左右のmarginを共にautoにして下さい。これで寄ります。 bodyによく書く、<div align="center">という物を記述すると真ん中に寄るのですが、これは使ってもいいものなのでしょうか?出来る事ならbodyには書きたくないですよね?? >第一の検証はfirefoxとか最近のブラウザを使い、その上で、最後にIE検証がベストだと思います。 そうなんですか、IEばかり見ていたので・・・。 逆にそのfirefoxとかでうまく表示されればnetscapeやIEでも正しく表示されるのでしょうか? >あとcssデザインだと、どうしても理屈ではないエラーも出てきます。ですので、それぞれのブラウザにだけ適用させるという方法も必要になってきます。 そうなんですか、ものすごく奥が深いのですね。ブラウザごとに対応ですか、調べてみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • quads
  • ベストアンサー率35% (90/257)
回答No.1

まず、ボーダーの色指定。などというのはどのような指定方法なのでしょうか。 実際のページを見せていただければよいのですが、ソースの提示程度はしていただかないと回答が難しいです。 次に、IEだと思い通りに表示されるというのは、HTML文法的には間違っていると思われます。 もう少しソースの情報がないと的確なアドバイスが出来ない気がします…。 http://openlab.ring.gr.jp/k16/htmllint/htmllinte.html http://jigsaw.w3.org/css-validator/ 一度検証されてみてはいかがでしょうか。

yuyukina
質問者

お礼

quadsさん、ありがとう御座います。 >ソースの提示程度はしていただかないと回答が難しいです。 そうですよね、今少しかまっていた物を載せてみたいと思います。HTMLとCSSをお恥ずかしいですが掲載いたしますので、ご指摘等宜しくお願いいたします。 まずはHTMLです。 <body> <div id="banner"> <p>ここがバナーでーす。</p> </div> <div id="mainbox"> <div id="leftbox"> <p>ここが左側です。</p> </div> <div id="centerbox"> <p>ここが中央です。</p> </div> <div id="rightbox"> <p>ここが右側です。</p> </div> </div> <div id="footer"> <p>ここがフッターです。</p> </div> </body> 次にCSSです。 body { font-size: small; text-align: center; margin: 0px; } #banner { height: auto; width: 700px; border: thin solid #FF33FF; } #mainbox { height: auto; width: 700px; border: thin solid #00FF00; } #leftbox { font-size: small; height: auto; width: 200px; border: thin solid #000099; text-align: left; float: left; } #centerbox { font-size: small; width: 300px; border: thin solid #FFFF33; float: left; text-align: left; } #rightbox { font-size: small; text-align: left; float: left; border: thin solid #FF0000; width: auto; height: auto; } #footer { height: auto; width: 700px; border: thin solid #CC33CC; } 以上になります。宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CSSでのレイアウトについて

    HTML、CSS超初心者なのですが CSSでレイアウトを組むと ブラウザを縮小したりしたときに レイアウトがぐちゃぐちゃになります paddingやmarginはpxで指定してるのですが それがいけないのでしょうか? |   | |あああ| |   | こういうレイアウトの物が ブラウザを小さくすると || ||あああ || とボーダーがちいさくなって 中の文字がはみ出してしまいます どうぞよろしくお願いします

  • CSSによるレイアウトブロック(Dreamweaver)

    Dreamweaver8を使用しています。 参考書にそって、CSSによるレイアウトブロックで、 ページ全体のCSSを作成しました。(body) 次にコンテンツ全てを選択し、全体のCSSを作成しました。(div) ブラウザで表示させると、ページ全体が左に偏ってしまいます。 これを中央にするのにはどうすればよいでしょうか? よろしくお願いします。

  • CSSで高さ100%のレイアウト

    テーブルを使用せずCSSでのレイアウトなのですが フッター位置をブラウザの一番下にマージン無しで指定したいのですが出来ません。 テーブルでは <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td valign="top">内容</td> </tr> <tr> <td valign="bottom">フッター</td> </tr> </table> というように指定していたのですが CSSでのレイアウトはHTMLを <div id="container"> <div class="content">内容</div> <div id="footer">フッター</div> </div> .CSS では #container { height: 100%; } は無効なのでしょうか? 他のやり方でもフッターをブラウザの一番下にマージン無しでレイアウトできる方法があったら教えて下さい。

    • ベストアンサー
    • CSS
  • CSSでレイアウト

    3つのブロック要素div1,div2,div3があった場合に添付のような レイアウトにするにはどうすればよいでしょうか? div2,div3をさらにレイアウト用のdiv4でグループ化してしまえばできますが、 今後もできるだけHTMLをいじることなくCSSだけで自由にレイアウト変更をできるように なっておきたいと思っています。 できれば座標指定はしたくないのでPositionのStaticは使わないほうが嬉しいです。 全部Staticにする方法はわかっておりますので全箇所Staticではなく、 「全部相対postionではなく1か所だけStaticを使う」などが効率的だ、というのであれば そちらのやり方でも教えていただけると助かります。 特定の環境での実行を意図していませんが必要な場合はIE8以降、などイマドキな環境 での利用しやすいものがより助かります。HTML/CSSのバージョンはそれに応じる形で 特に指定はございません。 よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • CSSレイアウトの回り込みについて

    初めまして、よろしくお願いいたします。 見よう見まねでCSSレイアウトのweb制作に挑戦している者です。以下の現象についてご指南いただければ大変助かります。 ■CSS #wrapper { width : 620px; } #left { width : 300px; float : left; } #right { width : 300px; float : right; } ■ソース <div id="wrapper"> <div id="left"> (左寄せブロック) </div> <div id="right"> (右寄せブロック) </div> </div> 上記のCSSとソースで「620px幅の外枠」の中に「300px幅の左寄せブロック」「300px幅の右寄せブロック」が中央に20pxの隙間を空けて正常に表示されるのですが、右寄せブロックの中に長いテキストを改行せずに書いたら右寄せブロックが右寄せにならず、左寄せブロックの下に落ちて表示されてしまいます。 この現象は、長いテキストが300px幅に指定されている右寄せブロックの幅を押し広げている?から起こるのでしょうか。 右寄せブロックの中に長いテキストを書く場合、いちいち300px幅を意識して自分で改行を入れなくても、300pxの右寄せブロック幅を押し広げることなく自動折り返しされれば良いのですが。(右寄せブロックの高さは指定していないので) また、文字のサイズはpxで固定できない事情があるので、ブラウザで可変できるパーセント指定にしているのですが、ブラウザの文字サイズ中では正常に右寄せされている右寄せブロックが、文字サイズ大に変更したとたんに左寄せブロックの下に落ちてしまいます。 右寄せブロックの中に長いテキストを改行なしで書いても右寄せブロックが左寄せブロックの下に落ちて表示されない様、どなたかご指南いただければ誠に幸いです。

  • CSSでのレイアウトについて

    CSSやHTMLのテンプレートをカスタマイズ中です。 分からないことだらけですが構成としては BODYと#maincontで分かれていまして、 画面中央に四角いコンテンツ。 サイドに背景画像が表示されるようにしたいです。 BODY部分に背景画像のbackground指示を入れると 画面一面中央コンテンツ上にも背景画像が表示されてしまいます。 画像がかぶっている中央コンテンツの文章や 外枠は画像の上から表示されて読めます。 一枚構成になっているような状態だと思うのです。 枠外背景にのみ画像を表示する方法を教えてください。 画像なしの状態では閲覧に問題はないです。 下記CSSを一部抜粋します。 どなたかご親切な方。 分かりやすくお願いします。 BODY{ font-size:~~; font-family:~~~; color:#~~~; border-top:5px #000000; solid; background-image: url(~~~);  background-repeat: repeat; } #maincont{ width:600px; margin:auto;  padding:30px border-left:3px #~~~ dotted; border-right:3px #~~~ dotted; }

  • cssについて

    HTML初心者で困ってます。 cssで body {     text-align: center; } としてレイアウトを中心に表示したのですが、InternetExplorer8で 見ると左寄せになってしまいます。 InternetExplorer6、7では普通に中心になるのですが・・・ どなたか教えてください。

  • Netscape4.7対策

    cssレイアウトしたwebサイトを制作中なのですが、ieやforefoxではブラウザでプレビューするときちんと表示されるのですが、Netscape4.7でプレビューするとmarginやborderがきちんと表示されません(特にborder)Netscape4.7でもieと同じように表示させる方法を教えてください。

  • CSSレイアウトでこのようなことはできる?

    ホームページをテーブルを使用しないCSSレイアウトで作成しようと思います。 左右を分けるのにfloatを使用して作っています。 横幅は30%と70%で分けていますが、ブラウザの幅を小さくすると上下にずれてしまいます。 そこでブラウザで800px以下になった時は横バー表示するようにしたいです。 このようなことはできるでしょうか?

  • 同じブラウザでレイアウトが崩れるのはなぜですか?

    同じブラウザ(IE8)を使用しているのに、CSSレイアウトが崩れます。 HTML、CSSをタグ打ちでホームページを作成したのですが、 2台のまったく同じパソコンで表示させたところ、同じブラウザ(IE8)を使用しているのにレイアウトが違っています。 自分のパソコンでは思い通りのレイアウトで表示されるのですが、もう一台の同じパソコンでは余白が広すぎたり、 2段で表示されたりしてしまいます。 ちなみにCSS検証サービスなどでは問題ありませんでした。 他のブラウザでも私のパソコンでは同じレイアウトで表示できます。 何がダメなのかまったくわかりません。 サーバーはFC2の無料サーバーを使用しています。 考えられることがあれば、何でもいいのでどなたか教えてください。 よろしくお願いします。

    • ベストアンサー
    • HTML