• ベストアンサー

div入れ子、親でmarginを設定すると子のmarginは反映されない?

段組みレイアウトでdivが 入れ子になってています。 外側が <div id=wrap> <div id=main> <div id=form> </div> </div> </div> #wrap{ width: 840px; margin-top: 0px; margin-right: auto; margin-bottom: 15px; margin-left: auto; } #main { width: 582px; float: right; padding: 0; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 10; } #form { width: 562px; padding: 0; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 20; } としてあります。 id=formのmargin-left :20; だけがブラウザで反映されず、 flort:right;で右に寄せて左に20pxあけました。 id=mainもflort:right;で右に寄っているだけだったようです。 divを入れ子に使う場合、 親でmarginを設定したら、子のmarginは反映されないのでしょうか?

  • HTML
  • 回答数4
  • ありがとう数6

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

  • ベストアンサー
回答No.1

margin-left: 20; ではなくて、 margin-left: 20px; と書いたら、反映しませんか?

takeetakee
質問者

お礼

反映しました。見落としでお手数をかけてすみませんでした。 このpxの見落としと、IEのmarginの問題が絡んで、混乱しきっていました。 ありがとうございます。

その他の回答 (3)

noname#83877
noname#83877
回答No.4

IEの仕様が微妙なので親要素のボックスに向けて(?)の内側からのmarginよりもpaddingで余白を取る方がいいと思います。 場合によっては親要素にmarginが継承されてしまう場合もあるので・・・

takeetakee
質問者

お礼

ありがとうございました。確かにそのようです。 IEで内側のmarginがとれないのがpaddingを使うことでうまくゆきました。 他の方に指摘頂いた、pxの記入漏れとあいまって混乱していましたが、 スッキリしました。

  • coopy72v
  • ベストアンサー率12% (1/8)
回答No.3

私の環境ではですが mainのfloat:right;をはずせば普通にマージン取れていました。 下の方も書いていらっしゃいますが、マージンをあけるときはpx等、 単位は書いたほうがよいかと思います mainを右周り込みにするということは、左の20pxの隙間に何かを入れたいのでしょうか? 右のスペースに何かを回りこませるならば、float:left; かな? ついでですが、上下左右すべて指定するならば margin:(top) (right) (bottom) (left);と並べて書けばできますよ^^ 回答に勘違いがあったら 申し訳ないです;

takeetakee
質問者

お礼

ありがとうございます。 marginがとれました。これでfloat:left;でもOKでした^^

noname#119508
noname#119508
回答No.2

通常は反映されるはずです。 ですがNo.1の方もいっている通り、『px』の文字が抜けてると表示できないことがあるようです。 あと、id=○○じゃなくてid="○○"にした方が良いですよ。

takeetakee
質問者

お礼

こまかい見落としで、苦労してるだけなんですね。 ブラウザによって大丈夫だったりするので、ブラウザの問題にしてしまいがちですが自分が悪いんですね。 ご指摘ありがとうございます。

関連するQ&A

  • 外側のdivの高さを入れ子のdivの高さに自動的に合わせたい

    外側のdivの高さを入れ子のdivの高さに自動的に合わせたい 添付画像のようなコンテンツを作成しています。 外側のdiv(contents_box)内にcontents_imgとcontents_textのdivを配置しています。 このcontents_imgとcontents_textの高さに合わせて外側のcontents_boxも自動的に変動させたいのですが、どのようにしたら良いのでしょう? 高さをautoですとただの棒のようになってしまい、ダメでした。 どうぞよろしくお願い致します。 xhtml <div id="contents_box"> <div id="contents_img">ここに画像</div> <div id="contents_text"> ここにテキスト</div> </div> css #contents_box { height: auto; width: 805px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #333; } #contents_img { height: auto; width: 300px; margin-top: 10px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; float: left; } #contents_text { height: auto; width: 485px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 10px; float: right; text-align: justify; }

    • ベストアンサー
    • HTML
  • CSS <div>の入れ子が反映されない

    <div>要素を使ってレイアウトを考えています。 いくつかのBOXを一まとめにして中央表示にしようと思うのですが 一まとめにする為のdiv要素が全く反映されません。 ============================ * { padding : 0px ; margin : 0px ; } #kihon { background:#ff0000; width : 752px ; margin : 0 auto ;} #header { width : 750px ; background: #ff00ff ; } #main { float: left; width: 500px; background: #0000ff ; } #menu { float: left; width: 250px; background: #00ff00 ; } #footer { clear : both ; width : 750px ; background: #000000 ; } ============================ <body> <div id="kihon"> <div id="header">aaa</div> <div id="main">aaa</div> <div id="menu">aaa</div> <div id="footer">aaa</div> </div> </body> ============================ 上の記述で、<div id="kihon">が全く反映しません。 一応一まとまりにはなるのですが、左上に固まって表示されるだけです。 自分でも色々調べたのですが調べ方が悪いのか原因が全く分かりません。 知り合いにHP作成の知識がある人がおらず相談が出来ないので こちらでお力を貸して頂きたく投稿させていただきました。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • divの入れ子が上手くいきません。

    .line { background-image: url(../img/line.gif); background-repeat: no-repeat; background-position: left bottom; display: block; padding: 0px; clear: both; width: 600px; height:auto; margin: 0px; } .left{ width:210px; height:90px; float:left; text-align:center; padding:10px 5px 10px 0px;} .right{ width:360px; height:90px; float:left; padding:10px;} <div class="line"> <div class="left">あああ</div> <div class="right">いいい</div> </div> 上記のようにlineでleftとrightを内包したいのですが、IEでは表示されるのですが、fox・safariで確認すると画像が消えてしまいます。 どうもdivで括っているせいかline内に文字が入っていないと認識されているようで、ためしに適当な数字を入れてやると認識されました。 また、lineのheightをpx指定してやると表示されるのですが、lineは使いまわしたいクラスなので、縦を固定することができません。 どうしたら解決しますか?

    • ベストアンサー
    • HTML
  • IE6でfloatされない。

    IE6でfloatされない。 横幅950pxのコンテンツの中に divで3つのboxを作って横一列に並べているのですが ie7,8, firefoxでは意図した通りに表示されますがie6ではdiv id="c"(下記ソース)がfloatされません、どなたか解決策をご指導お願いします。 <div id="a"><img src="img/left.png" width="403" height="240" alt="スペース左" title="" /></div> <div id="b"><iframe name="iframe3" id="iframe3" frameborder="0" scrolling="no" src="home.html" title="******">*******</iframe></div> <div id="c"><img src="img/right.png" width="403" height="240" alt="スペース右" title="" /></div> css記述は下記の通りです #a{ padding-top : 0px; padding-left : 0px; padding-right : 0px; padding-bottom : 0px; margin-top : 0px; margin-left : 0px; margin-right : 0px; margin-bottom : 0px; width : 403px; height : 240px; float : left; display : inline; } #b{ padding-top : 0px; padding-left : 0px; padding-right : 0px; padding-bottom : 0px; margin-top : 0px; margin-left : 0px; margin-right : 0px; margin-bottom : 0px; width : 144px; height : 240px; float : left; display : inline; } #c{ padding-top : 0px; padding-left : 0px; padding-right : 0px; padding-bottom : 0px; margin-top : 0px; margin-left : 0px; margin-right : 0px; margin-bottom : 0px; width : 403px; height : 240px; float : left; display : inline; } #iframe3{ border-width : 0px 0px 0px 0px; margin-left : 0px; width : 144px; height : 240px; padding-top : 0px; overflow : hidden; margin-top : 0px; margin-right : 0px; margin-bottom : 0px; padding-bottom : 0px; padding-left : 0px; padding-right : 0px; } 宜しくお願いします。

  • ホームページビルダーでスタイルシートを使ったのですが?

    今、ホームページビルダーで簡単な2カラム(右メニュー)のテンプレートを作っています。 質問ですが、メニューバー(サイドバー)に色を付けたくて、画像を使う事にしました。 <div class="main">に画像(background.gif)を入れ属性で繰り返す(垂直方向)にチェックをいれたのですが、IEやfirefoxでプレビューでは反映されていないです。 色々いじってみたのですがどうしても解りません。どこが間違っているのか教えていただけないでしょうか? よろしくお願いします。 HTML <body> <div class="box"> <div class="header"> <span class="site_name">ここにサイト名を入れる</span> <h1>ここにh1</h1> <div class="description_1">ここに簡単な説明文</div> </div> <div class="main"> <div class="contents">コンテンツ部分<br /> </div> <div class="menu"> メニュー部分 </div> </div> <div class="footer"> フッター部分 </div> </div> </body> スタイルシート * { margin:0; padding:0; } .box{ width : 750px; margin: 0 auto; border-left-width : 1px; border-left-style : solid; border-left-color : black; border-right-width : 1px; border-right-style : solid; border-right-color : black; border-bottom-width : 1px; border-bottom-style : solid; border-bottom-color : black; } .header { width : 726px; height : 96px; background-color : #b9b9ff; padding-top : 12px; padding-left : 12px; padding-right : 12px; padding-bottom : 12px; border-bottom-width : 2px; border-bottom-style : solid; border-bottom-color : black; } .main { width : 750px; background-image : url(file:///C:/Documents and Settings/※※※/img/background.gif); background-repeat : repeat-y; background-position : 0px 0px; margin-top : 0px; margin-bottom : 0px; margin-left : auto; margin-right : auto; background-color : #ffffff; } .menu { float: left; width : 180px; padding-top : 10px; padding-left : 10px; padding-right : 10px; padding-bottom : 10px; margin-left : auto; margin-right : auto; } .contents { float: left; width : 526px; padding-top : 12px; padding-left : 12px; padding-right : 12px; padding-bottom : 12px; } .footer { clear: both; width : 726px; height : 26px; background-color : #b9b9ff; padding-top : 12px; padding-left : 12px; padding-right : 12px; padding-bottom : 12px; text-align : center; } .menu ul { list-style: none; } .site_name{ font-size : 21px; font-weight : bold; margin-left : 12px; } h1{ font-size : 15px; margin-top : 12px; margin-left : 24px; } .description_1{ font-size : 12px; font-weight : normal; margin-left : 24px; }

  • CSSの崩れについて

    CSSにて横2段組のボックスを組んだところ、右側の内容がなぜか左側のボックスの下にも表示されてしまいます。 **html** <!-- out_wrap --> <div id="out_wrap"> <!-- inner_wrap --> <div id="inner_wrap"> <!-- left_Contents --> <div id="left_Contents"> <p>AAAA</p> </div><!-- /left_Contents --> <!-- right_Contents --> <div id="right_Contents"> <p>A</p> </div><!-- /right_Contents --> </div><!-- inner_wrap --> </div><!-- out_wrap --> **css** @charset 'Shift_JIS'; body{ margin-top : 0px; margin-left : 0px; margin-right : 0px; margin-bottom : 0px; text-align : center; background : #333333; color:#4f4d45; } #out_wrap{ margin-left : auto; margin-right : auto; width : 980px; padding-top : 20px; background-color : #FFFFFF; } #inner_wrap{ margin-left : 10px; margin-right : 10px; width : 960px; } #left_Contents{ width : 650px; float : left; margin-right :10px ; line-height : 200%; text-align : left; background-color : #000000; } #right_Contents{ width : 300px; float : right; line-height : 200%; text-align : left; background-color : #999999; } ************************************************************* 右ボックスの A と打った文字が左側下にも表示されてしまいます。 marginの計算もあっていると思うのですが、しかもIE6でこのような現象です。Firefox最新版では大丈夫です。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • div入れ子の背景画像

    【CSS】 #layout{ width:755px; margin:auto; background-color:#ffff00; background-image:url(img/back.gif); background-repeat:repeat-y;} #menu{ width:168px; margin:0px; padding:0px; float:left;} #main{ width:570px; background-color:#ffffff; padding:0px 0px 0px 10px; float:left;} 【html】 <div id="layout">  <div id="menu">メニュー</div>  <div id="main">メイン</div> </div> レイアウトで指定した背景画像を縦に繰り返し表示させたいのですが、 上記のCSSだとIEはOKなのですが、foxが表示されません。 メニューidにはデザイン上背景画像は設定できません。 また、 <div id="layout"> あああ </div> を試したら背景画像が表示されましたので、パスの間違いはありません。 どうすれば良いでしょうか? 知恵をお貸しいただけますでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • [CSS] 入れ子DIVの、親・子 両方でFloatする方法

    ベテランの皆様で、もしこの問題の解決策をお持ちの方がいらっしゃったらぜひよろしくお願いいたします。 入れ子になっているDIVを、CSSで配置しようとしています。 <DIV>   <Div>左上のロゴ画像(Float: Left)</Div>   <Div>右側のメニュー(Float: Left)2段にする      <div>1段目 text-align: right</div>      <div>2段目 この中にも入れ子でFloat leftのDIVと画像を並べる</div>   </Div> </DIV> という構造を作りたいのですが、 <div>2段目 この中にも入れ子でFloat leftのDIVと画像を並べる</div> ↑の中、及び <Div>右側のメニュー(Float: Left)2段にする の部分が、IE6、Opera6でうまくfloatされません。 文章で書くとわかりづらいため、図にしたものをアップしてみました。 http://sakuratan.ddo.jp/imgboard/img-box/img20071027012919.gif ソースコードを以下にコピペしますので、それぞれ 「test.html」「testcss.css」 といった名前をつけて同階層に保存していただけると、現象見えると思います。 この問題でずっと頑張っているのですが・・何か解決策お持ちの方、どうぞよろしくお願いいたします。 以下、ソースコード -------------------------test.html-------HTML部------------------ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <meta name="robots" content="index,follow" /> <title>トップページ</title> <link href="./testcss.css" media="all" rel="stylesheet" type="text/css" /> </head> <body> <form name="fmMain" id="fmMain" method="POST" action="" enctype="multipart/form-data"> <div id="wrap"> <div id="header"> <div id="navi"> <div class="logo" style="border:0;"> <a href="./"><img src="./img/index/navi_home.jpg" alt="ホーム" border="0" /></a></div> <div class="left"> <div id="navi_favor"> このページをお気に入りに登録できます <input type="submit" name="brSrch" value="登録" /> </div> <div id="navi_items" style="padding-left:20px;"> <div class="navi_item_tsushin"> <a href="#"><img src="./img/index/navi1.jpg" alt="" border="0" /></a></div> <div class="navi_item_campain"> <a href="#"><img src="./img/index/navi2.jpg" alt="" border="0" /></a></div> <div class="navi_item_shop"> <a href="#"><img src="./img/index/navi3.jpg" alt="" border="0" /></a></div> <div class="navi_item_link" style="border: 0;"> <a href="#"><img src="./img/index/navi4.jpg" alt="オススメリンク" border="0" /></a> </div><br clear="left" /> </div> </div> </div> </div> </div> </form> </body> </html> -------------------------testcss.css------CSS部------------------ @charset "euc-jp"; * { margin: 0px; padding: 0px; } body { background-color: #FFFFFF; font-size:10px; line-height: 12px; font-family: "MS P ゴシック", Osaka; } #wrap { width: 610px; } #header { width: 610px; } #navi { clear: left; } #navi_favor { padding:10px 3px 20px; text-align: right; color: #436921; } #navi_items { pading-left: 30px; width: 450px; } #navi .navi_item_tsushin{ float: left; border-right: 2px solid #335914; width: 99px; } #navi .navi_item_campain{ float: left; border-right: 2px solid #335914; width: 132px; } #navi .navi_item_shop{ float: left; border-right: 2px solid #335914; width: 90px; } #navi .navi_item_link{ float: left; border-right: 2px solid #335914; width: 116px; } .logo { /* position:relative; */ float: left; width: 136px; margin-right: 3px; } .left { /* position:relative; */ float: left; width: 470px; }

  • CSS-paddingが反映されません

    入れ子にしたCSSなのですが中にいれた方のボックスのpaddingが反映されません。 CSS---------------------------- #main { width:540px; float:left; background-color: #FFFFFF; padding-right: 25px; height: 100%; } #main2 { width:500px; background-color: #FFFFFF; padding-right: 20px; padding-left: 20px; } HTML---------------------------- <div id="main">□□□□□□□□□□□□□ <div id="main2">□□□□□□□□□□□□□</div> </div> 「main2」というボックスの左右に余白を作りたいのです。 ご教授ください。

  • cssを使って枠の設定をしたく、以下の記述尾をしましたが、一部うまくい

    cssを使って枠の設定をしたく、以下の記述尾をしましたが、一部うまくいかないところがあり、質問をさせて頂きますのでどなた様かご指導のほどよろしくお願いいたします。 [css] <div id="main"> border: solid 2px #d3d3d3; margin-left:auto; margin-right:auto; width:780px; <div id="waku1"> width:170px; border: solid 3px #d3d3d3; padding-left:0px; padding-top:3px; padding-bottom:3px; margin-top:3px; margin-bottom:0px; background-color:#ccffff; <div id="waku2"> width:600px; border: solid 3px #d3d3d3; text-align:right; margin-left:auto; margin-right:0px; float:left; } 私としては780pxで作成した枠の中に、左側に170pxの枠を作成して、その右側に、600pxの枠を作成したかったのですが、何かがきっと問題なようで、うまくいきません。 どなた様か、ご指導のほどよろしくお願いいたします

    • ベストアンサー
    • HTML

専門家に質問してみよう