• 締切済み

誤差!?

外部CSSに下記のように記述し .box-base { width: 700px; } .box-header { width: 700px; height: 150px; text-align: left; } .box-center-base { width: 470px; padding: 20px 20px 20px 10px; float: left; } .box-center { width: 440px; text-align: left; } .box-center2 { width: 440px; text-align: left; } .box-left-base { width: 230px; padding: 20px 10px 20px 20px; float: left; } .box-left { width: 200px; text-align: left; } HTMLのほうに <DIV class="box-base"> <DIV class="box-header"> 内容 </DIV> <DIV class="box-left-base"> <DIV class="box-left">内容</DIV> </DIV> <DIV class="box-center-base"> <DIV class="box-center">タイトル</DIV> <DIV class="box-center2">内容<DIV> </DIV> </DIV> と打っているのですがなぜかcenterボックスのほうがleftボックスの右側に来ずに下に下がってしまいます。 そこで、leftボックスのほう(baseとleft)のwidthを2px減らしたら綺麗に表示されました。 でもその分の2px、隙間が開いてしまいました^^;(全体に20pxの隙間が開くはずが右だけ22pxになってしまいました) なぜでしょうか?どなたか助言お願いします。 (CSS、HTMLには修正しています。もしこの情報だけでは判断できない場合は、修正してないものをアップします)

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

みんなの回答

  • hiro_maru
  • ベストアンサー率54% (6/11)
回答No.3

おそらくここで問題なのはwidthの値であり、widthはpaddingを含めない領域を示します。ですので、widthを指定しているものにpaddingを設定すると、width+paddingの値が総合的な幅になります。なので、mudatekiさんの設定だと、下に落ちてしまうと思われます。 (ただ、ブラウザの解釈によって違いがあり、IEの5.5以前はpaddingを含む領域をwidthと解釈してしまうようです) なので、No,2さんのように、paddingを付ける合計が700になるように設定するとぴったりになるということです。 また、文章を構造的に考えるならば、divは区切りなどを示す値なので、全てをdivで区切るのではなく、枠としてのdiv,タイトルや内容を示すものにはh1~h6の見出しやpなどの段落としての意味付けをする事がよいと思われます。 例えばこんな感じにしてみました。 (h1~h3も、実際はフォントの大きさなどを指定します) <DIV class="box-base"> <DIV class="box-header"> <h1>内容</h1> </DIV> <DIV class="box-left-base"> <h2>内容</h2> </DIV> <DIV class="box-center-base"> <h3>タイトル</h3> <p class="p1">内容</p> </DIV> </DIV> CSSは .box-base { width: 700px; margin: 0px; padding: 0px; } .box-header { width: 700px; height: 150px; text-align: left; margin: 0px; padding: 0px; } .box-center-base { width: 470px; padding: 0px; float: left; margin: 0px; height: auto; } .box-left-base { width: 230px; padding: 0px; float: left; margin: 0px; } h2 { padding-top: 20px; padding-right: 10px; padding-bottom: 20px; padding-left: 20px; } h3 { margin: 0px; padding-top: 20px; padding-right: 20px; padding-bottom: 0px; padding-left: 10px; } .p1 { padding-top: 0px; padding-right: 20px; padding-bottom: 20px; padding-left: 10px; margin: 0px; }

参考URL:
http://www.stylish-style.com/beginer/basic/boxmodel.html
  • crepon133
  • ベストアンサー率51% (399/776)
回答No.2

正しい書き方かどうかは分かりませんが・・・ 便宜上色を付けてあります .box-base { width: 700px; background-color: #000000; } .box-header { width: 700px; height: 150px; text-align: left; background-color: #ffcccc; } .box-center-base { width: 470px; float: left; background-color: #ffffcc; } .box-center { width: 440px; margin: 20px 20px 0px 10px; text-align: left; background-color: #ffff00; } .box-center2 { width: 440px; margin: 0px 20px 20px 10px; text-align: left; background-color: #ffccff; } .box-left-base { width: 230px; float: left; background-color: #ccffff; } .box-left { width: 200px; margin: 20px 10px 20px 20px; text-align: left; background-color: #00ffff; }

noname#19206
noname#19206
回答No.1

どういう風にしたいのかよくわかりませんが HTML の前に strict の DOCTYPE 宣言を加えて、 CSS を大体下に挙げたような形にすれば回りこみ問題を回避でき、なおかつ異なる環境間でもほぼ同じように表示できます。 IE,Firefox,Opera などで正常に表示することが出来ました。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 //EN"> .box-base { width: 710px; float:left; } .box-header { width: 700px; height: 150px; text-align: left; } .box-center-base { width: 410px; padding: 20px 20px 20px 10px; float: left; } .box-center { width: 410px; text-align: left; } .box-center2 { width: 410px; text-align: left; } .box-left-base { width: 230px; padding: 20px 10px 20px 20px; float: left; } .box-left { width: 200px; text-align: left; float:left; }

関連するQ&A

  • IEとFireFoxでCSSの見た目をそろえたい

    CSSの素人ですがボックスを使って2カラムスタイルのデザインを作ろうとしているのですが 完成したのをみるとIEとFireFoxで見た目変わりうまく調整できずに困っています。 足し算はあっているはずなのですがどこを修正すればよいのでしょうか? HTML <body> <div id="wrapper"> <div id="container"> <div class="header"> <h1>&nbsp;</h1> </div> <div class="kaijyo"></div> <div class="main"> <div></div> <h2>&nbsp;</h2> <div class="kaijyo"></div> <div class="line"> <hr> </div> </div> <div class="menu"> </div> <div class="kaijyo"></div> <div class="footer"> <p>&nbsp; </p> </div> </div> </div> </body> CSS #wrapper{ text-align:center; /*IE対応*/ } #container { width: 980px; margin-left:auto; margin-right:auto; background-color:#CAB59B; text-align:left; } .header{ width: 970px; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 10px; background-color:#6F0011; color:#000000; text-align:left; height:20px; } .main{ width: 670px; float: left; margin: 0px 0px 0px 0px; padding: 10px 15px 10px 15px; background-color:#E4E4E4; text-align:left; } .menu{ width: 260px; float: left; margin: 0px 0px 0px 0px; padding: 10px 10px 10px 10px; background-color:#CAB59B; text-align:left; } .footer{ width: 970px; float: left; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 10px; background-color:#6F0011; color:#FFFFFF; text-align:left; } .kaijyo{ clear: left; }

    • ベストアンサー
    • CSS
  • float横並びにしたブロックの中のul/liを縦並びにさせたい

    float leftで横並びさせている中でul/liを縦並びにさせたい。現在はすべて横並びしてしまう。 (html) <div class="base"> <div class="box1"> <a href="#"><img src="#" alt=""></a> </div> <div class="box2"><img src="images/spacer.gif" width="1" height="1" alt=""></div> <div class="box3"> <ul class="list-y"> <li>ああああ</li> <li>いいいい</li> <li>うううう</li> <li>ええええ</li> <li>おおおお<a href="#">かかか</a></li> </ul> </div> </div> (css) ul{ margin: 0; padding: 0; list-style-type: none; text-decoration: none; display: block; } li { margin: 0; padding: 0; display: inline; } .base { width: 618px; height: 100px; margin: 0; padding: 8px 10px 0 10px; text-align: left; line-height: 1.5em; background-image: url(../images/content_bg.gif); background-repeat: repeat-y; } .base .box1 { width: 130px; height: 97px; margin: 0; padding: 0; float: left; outline: solid 2px black; } .base .box2 { width: 2px; height: 100px; margin: 0 5px 0 10px; padding: 0; float: left; border-right: dotted 2px #ccc; } .base .box3 { margin-left: 157px; padding: 0; font-weight: bold; text-align: left; } .list-y{ clear: both; } CSSに疎いのでよろしくお願いいたします。

    • ベストアンサー
    • CSS
  • 携帯サイトでの回り込み

    携帯サイトをコーディングしているのですが、auのみ、ボックスの回り込みが出来なく困っています。 「画像の右にテキスト」であれば CSS ----------------------------------------------- .float { float:left; } .img { width:50px; height:35px; } ----------------------------------------------- HTML ----------------------------------------------- <!--{* この画像の右に文字列を表示する *}--> <img class="float img" align="left" src="jpg.jpg" /> floatON <!--{* 回り込み解除 *}--> <div clear="all" class="clear"></div> floatOFF ----------------------------------------------- で出来たのですが、 「ボックス要素の右にボックス要素」だと CSS ----------------------------------------------- .float-box1 { float:left; text-align:left; width:20%; height:30px; background:#4682b4; } .float-box2 { float:left; text-align:left; width:20%; height:30px; background:#3cb371; } ----------------------------------------------- HTML ----------------------------------------------- <div class="float-box-area"> <div class="float-box1" align="left">box1</div> <div class="float-box2" align="left">box2</div> </div> <div clear="all" class="clear"></div> ----------------------------------------------- で組むと、 box1 box2 という状態になってしまいます。 box1box2 というふうにしたいのですが、どなたかご存知の方いらっしゃいますか? テーブルでは考えていないのでテーブルでの横並びはなしでお願いします。 softbankとdocomoでは上記で回り込み出来ました。auだけ出来ません。 ブラウザ種は「WAP2.0」になります。 宜しくお願いいたします。

    • 締切済み
    • CSS
  • CSSで全体をセンタリングしたい

    navi address main footer ↑このような4つの<div>をさらにcoverという<div>でくるんだ?レイアウトにしました。 下記のようなCSSにしたのですが、中央にすることができません。 同じような質問もたくさんあり、拝見したのですがどうもうまくいきません。 coverという<div>を作ったのが間違いなのでしょうか? ------------------------------------------- body{ text-align:center; } #cover{ width: 800px; margin-right=:auto; margin-left=:auto; text-align:left; } #navi{ float: left; width: 565px; height: 165px; } #address{ float: right; text-align: left; width: 235px; } #main{ width: 500px; clear:both; padding-right: 150px; padding-left: 150px; font-size: 10px; text-align: left; line-height: 20px; } #footer{ width: 500px; text-align:center; padding-right: 150px; padding-left: 150px; padding-top: 30px; } -------------------------------------------

    • ベストアンサー
    • CSS
  • 【至急】ボックスの高さ指定

    base(3つのボックスを包囲する)のボックスに背景画像をつけています。baseの中にboxを3つ横に並べてます。 ■box左は画像(背景黒でパディングで画像に黒枠をつけているようにみせている※アウトラインでやったらIEだと表示されなかったので) ■box真ん中は仕切り線(背景はなし) ■box右はテキスト(背景グレー)にしてます。 質問内容: box右【テキストの高さ】に合わせて、baseの【背景画像】とbox真ん中の【仕切り線】を延長させるにはどうすればいいのでしょうか? (html) <div class="base"> <div class="box1_img"> <a href="#"><img src="#" alt=""></a> </div> <div class="box2_line"><img src="images/spacer.gif" width="1" height="1" alt=""></div> <div class="box3_text"> <ul class="list-y"> <li>ああああ</li> <li>いいいい</li> <li>うううう</li> <li>ええええ</li> <li>おおおお<a href="#">かかか</a></li> </ul> </div> </div> (css) ul{ margin: 0; padding: 0; list-style-type: none; text-decoration: none; display: block; } li { margin: 0; padding: 0; } .base { width: 618px; height: 100%;(←分からない??) margin: 0; padding: 8px 10px 0 10px; text-align: left; line-height: 1.5em; background-image: url(../images/content_bg.gif); background-repeat: repeat-y; } .base .box1_img { width: 130px; height: 97px; margin: 0; padding: 2px; float: left; background: black; } .base .box2_line { width: 2px; height: 100%;(←分からない??) margin: 0 10px 0 10px; padding: 0; float: left; border-right: dotted 2px #ccc; } .base .box3_text { width: 450px; margin: 0; padding: 5px; float: left; text-align: left; background: #eee; } ul .list-y{ font-weight: bold; text-align: left; } とっても切羽詰まってます!! すぐに回答いただけると、とっても助かります。 よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • floatを使用すると中央寄せにならない

    CSSについて質問があります。 floatを使って2段組のレイアウトにしたのですが、 MacのIE5.2で見ると、floatを使ったdiv(container)だけ中央寄せではなく 左寄せになってしまいます。MacのSafariやFirefoxでは正常に見れました。 URL:http://fuma.xrea.jp/ /* CSSソース*/ html{height : 100%; width : 100%;} body{width : 100%; text-align : center; margin : 0px auto; padding : 0px;} #container{ margin : 0px auto; padding : 0px; width : 720px;} div#main{ text-align : left; width : 490px; margin : 0px; padding : 8px 0px; float : left;} div#side{ margin : 0px; padding-bottom : 8px; text-align : left; width : 230px; float : right;} div#copyright{ text-align : center; margin : 0px auto; padding : 10px 0px; clear : both; width : 720px;} /* HTMLソース */ <div id="container"> <div id="side">てすと</div> <div id="main">てすと</div> </div> <div id="copyright">test</div> <div align="center">を使っても中央寄せになりませんでした。 どうすれば、MacのIEでも中央寄せにできますか?

    • ベストアンサー
    • CSS
  • divタグ+CSSでのレイアウトで、Firefox, Operaで不必要な余白ができてしまいます。

    divタグ+CSSでレイアウトしようとしています。 横関係では全体がセンタリングされていて、縦関係においては、各ブロック要素間の余白がなくぴったりくっついている状態にしたいのですが、Firefox 1.0やOpera 8などを使ってレイアウトを確認すると、上下や要素間に余白が出来てしまい、なかなかうまくいきません。 以下、HTMLとCSSのソースを、レイアウトに関する部分だけ載せます。 [--HTML--] <body> <div id="all"> <div id="header"> <p>header</p> </div> <div id="body"> <p>body</p> </div> <div id="sidebar"> <p>sidebar</p> </div> <div id="footer"> <p>footer</p> </div> </div> </body> [--CSS--] @charset "shift_jis" body { margin: 0 auto; padding: 0; text-align: center; } div#all { width: 760px; background-color: blue; margin: 0 auto; padding: 0 0 20px; text-align: left; overflow: hidden; } div#header { position: relative; left: 17px; width: 717px; height: 50px; background-color: yellow; margin: 0; padding: 0; text-align: left; } div#body { position: relative; left: 17px; width: 522px; height: 200px; background-color: lime; margin: 0 0 2em; padding: 0; text-align: left; float: left; } div#sidebar { position: relative; left:32px; width: 180px; height: 200px; background-color: red; margin: 0 0 3em; padding: 0; float: left; } div#footer { position: relative; left: 17px; width: 717px; height: 100px; background-color: fuchsia; margin: 0; padding: 0; clear: both; } ---------- marginやpaddingを"0"にしているにもかかわらず、余白が生まれてしまうのはなぜなのでしょう・・?

    • ベストアンサー
    • CSS
  • (CSS)画像が完全に右端に寄りません・・・

    CSS勉強中でソースの不備が多々あると思いますがどうかみていただけますでしょうか・・。 <div class="bar">の画像の一番端の右下に<p class="px">の画像を隙間無く持ってきたいのですがどうしても<p class="px">の右側が空いてしまいます・・。対処方法がございますでしょうか。 根本からソースが違うかもしれません・・何卒お願いいたします! .pattern_box { width:708px; padding:0px 26px; text-align:right; } .pattern_box .bar { width:708px; margin:0px; } .pattern_box .px { float: right; display: inline; margin: 0px 0px 10px auto; text-align:right; } .pattern_box .inner { margin:10px 0px 0px 0px; text-align:left; font-size:12px; line-height:18px; } ★HTML <div class="pattern_box"> <div class="bar"> <img src="h2_bar01.gif" alt="" width="708" height="20"> </div> <p class="px"><img width="145" height="62" src="h2_bar01_ill.gif"></p> <div class="inner">テキストテキストテキスト</div> </div><!--pattern_box-->

    • ベストアンサー
    • CSS
  • CSSで画面を構成しています。

    CSSで画面を構成しています。 左ブロック、右ブロック共に角丸の四角にしたいので、**_head.gifというようなフタとソコになるような画像を使っています。 このままだと左右ブロックの高さが当然そろわないのですが、何か良い方法はないでしょうか? テーブルレイアウト以外であれば、多少イレギュラーな方法でもかまいません。 *css********** div#body{width:800px; margin:10px auto; text-align:center; padding:0; } div#header{padding:0; margin:0 0 10px 0; background-image:url(**.gif); width:800px; height:50px; text-align:left; } div#main{ width:800px; text-align:left; } div#submenu{padding:0; margin:0 10px 10px 0; width:200px; text-align:left; float:left; } div#contents{padding:0; margin:0 0 10px 210px; width:590px; text-align:left; } div#footer{padding:0; margin:0 0 5px 0; clear:both; width:800px; height:30px; text-align:left; } *html**** <div id="body"> <div id="header"> ヘッダー </div> <div id="main"> <div id="submenu"> <img src="img/common/sub_head.gif" width="200" height="10" />  <div>左ブロック</div> <img src="img/common/sub_foot.gif" width="200" height="10" /> </div> <div id="contents"> <img src="img/common/main_head.gif" width="590" height="10" />  <div>右ブロック</div> <img src="img/common/main_foot.gif" width="590" height="10" /> </div> </div> <div id="footer"> フッター </div> </div>

    • ベストアンサー
    • HTML
  • CSSにてfloat:leftを使用して画像を3つ並べたのですが。。

    CSSにてfloat:leftを使用して画像を3つ並べたのですがこの3つの画像をセンターによせることができません。 なんでかまったくわかりません(ToT) 教えてくださいm(__)m 【HTML】 <div class="box2"><img src="images/sum2.gif"></div> <div class="box3"><img src="images/sum3.gif"></div> <div class="box4"><img src="images/sum4.gif"></div> 【CSS】 .box2{ float:left; width:219px; } .box3{ float:left ; width:156px;} .box4{ float:left ; width:195px; }