• 締切済み

marginとナビゲーションの位置がずれる

質問初投稿で、現在webデザインを勉強中の者です。 あまり慣れていないので文章の拙さはご容赦ください。 現在自主制作中のWebサイトがあるのですが、 ナビゲーションをposition:fixedで固定に画面の下に配置するように設定しています。 そのまま上部に画像を配置しようと、margin-left;などで調節していたのですが、 ナビゲーションの位置がズレてしまい不自然な空白や、ナビゲーションそのものが消えるという状態になってしまいました。 margin-leftを1pxでも入れると右端から消えてしまいます。 paddingやposition:absoluteなどの別の方法も試してみましたがmarginと同じ状態になってしまいます。 もしかしたら別の画像を上に配置しているので、それが原因かもしれません。 どうしても自分では解決できないので、解決方法を教えていただきたいです。 画像はmargin-leftに数値を入力した時のものです。 #footer { margin: 0px; padding: 0px; position: fixed; left: 0%; bottom: 20px; width: 100%; height:44px; } #item{ margin-left:34px; margin-right:34px; margin-top:34px; } #fruits{ margin-left:34px; }

  • CSS
  • 回答数2
  • ありがとう数0

みんなの回答

noname#217950
noname#217950
回答No.2

htmlソースがわからないので、何が#footerで何が#itemなのか?など、全くわからず想像の域を出ませんが、 >margin-leftを1pxでも入れると右端から消えてしまいます。 という現象が起きるという事は、もしかしたら#footerのposition:fixedとは関係ないのではないでしょうか? 単純に「1px」幅が大きくなる事によって、画像を配置している親ボックスの幅より内容物のトータル幅が大きくなってしまい、溢れて内容物の最後の画像が下の段に移動してしまっているのではないかと考えました。 並べる画像や親ボックスに、paddingやborderなどを指定していませんか?paddingやborderは幅(width)にプラスされてしまいます。 例えば、画像が width : 100px; padding : 3px; border : 1px solid black; 等とCSSで指定されていたら、この画像を配置するのに必要なwidthは108pxとなります。 (画像自体の幅="100px"+左右の余白"3px×2=6px"+左右のボーダーライン"1px×2=2px") また、親ボックスにpaddingが指定されている場合もトータル幅からpadding分を引かないと溢れてしまいます。 この辺の解釈or計算ミスではありませんか? と…、想像からお返事してみましたが、的外れになる可能性も存分にありますがどうでしょう? 的外れだった場合… それほど難しい質問ではなさそうですので、htmlも質問文に追加すると的確な答えが得られると思いますよ。各IDやクラスを何に対応させているのか?positionの親要素等がわからないとこの質問に的確な答えは返せないと思います。

botamochi69693
質問者

補足

情報不足で申し訳ないです; htmlの記述はこうなっております。 別のページを制作している時は問題無かったのですが、 全体のmarginで調節してしまっているのが原因な気がします・・・。 見やすいように調節してありますのでご了承ください。 <div class="footer"> <a href="***.html"onmouseout="MM_swapImgRestore()"onmouseover="MM_swapImage('home','','***.jpg',1)"><img src="***jpg" alt="home" name="home" width="210" height="63" border="0" id="home" /></a> <a href="***.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('about','','***.jpg',1)"><img src="***.jpg" alt="about" name="about" width="210" height="63" border="0" id="about" /></a> <a href="#" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('***','','***.jpg',1)"><img src="***.jpg" alt="fruits" name="fruits" width="210" height="63" border="0" id="fruits" /></a> <a href="#" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('***','','***.jpg',1)"><img src="***.jpg" alt="recipe" name="recipe" width="210" height="63" border="0" id="recipe" /></a> <a href="#" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('***','','***.jpg',1)"><img src="***.jpg" alt="onlineshop" name="onlineshop" width="210" height="63" border="0" id="onlineshop" /></a> <a href="#" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('access','','***.jpg',1)"><img src="***.jpg" alt="access" name="access" width="210" height="63" border="0" id="access" /></a> </div> <div id="item"> <img src="***.png" width="500" height="54" alt="おすすめ商品" /> </div> <div id="fruits"> <a href="#" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('***','','img/***jpg',1)"><img src="***.jpg" alt="***" name="***" width="297" height="147" border="0" id="***" /></a><a href="#" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('***','','***.jpg',1)"><img src="***.jpg" alt="***" name="***" width="297" height="147" hspace="15" id="***" /></a> </div>

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

スタイルシートと言うよりHTMLの文書構造自体がおかしいのでは??? 書かれている一意セレクタを見る限り、デザインのためにHTMLを書かれているように見受けられます。  それでは、スタイルシートを導入して「文書構造とプレゼンテーションの分離」をする意味が全くなくなってしまいます。 #footerだと、HTML内にひとつしか書けませんが、footerは一塊の完結した記事には必ず存在すると思われますから、classセレクタでfooterと指定するほうが良いです。  ナビゲーションですからfooterには書かなくて良いものです。footerには他のページへのリンクはあるのが普通ですから・・  positionをstatic以外に指定すると、その子孫要素はその位置を基準にします。  。。正確にはブロック要素は直近のstatic以外の親コンテナブロックを基準にします。  セレクタは基点となるセレクタから書き始めましょう。 [例]  ⇒ナビゲーションリストを様々にデザインしてみよう。( http://www.ichiya.com/WebService/Howto/sample/HTML/nav/navigation1.html )  で、ブラウザの表示メニューからスタイルシートへ進み、[ウィンドウの下部固定下]を選択した状態を希望されているのだと思います。

関連するQ&A

  • paddingを指定すると、marginが広がります。

    はじめまして。 現在CSSでHPを作成しているのですが、タイトルにあるように、paddingを指定すると、marginが広がってしまいます。 topのpaddingを指定するとtop-marginが・・・ bottomを指定すると・・・ のような感じです。 原因と解決方法を教えていただけないでしょうか? #news { width: 180px; height: 110px; background-image: url(img/news.gif); margin-top: 15px; padding-top: 30px; background-repeat: no-repeat; padding-bottom: 20px; padding-left: 20px; } レフトに配置しています。

    • ベストアンサー
    • HTML
  • addressタグを入れると揃わない

    かなり簡素なページをデザインしていますが、フッターの画像をaddressタグではさむと、フッター画像だけ20ピクセル程右に寄ってしまい全体が揃いません。addressを除くと揃うのですが。 ページのソースは htmlファイル <div id="wap"> ここにSWFファイル <div id="nav"> <ul> <li>~</li> </ul> </div> <address><img footer.jpg" /></address></div> CSSファイル #wap { width: 800px; height: 570px; text-align: left; margin-right: auto; margin-bottom: 50; margin-left: auto; position:absolute; left:50%; top:50%; margin-top: -285px; margin-left: -400px; } #nav { background-color: #666666; margin-top: 0px; margin-bottom: 0px; font-size: 12px; color: #FFFFFF; float: left; width: 100%; } #nav ul { list-style-type: none; margin: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 28px; } #nav li { display: inline; padding: 0px; } 全体を#wapに入れて上からSWF、リストタグのナビ、画像のフッターと入った大変簡素なページですが、フッターの画像をadreesタグで挟むとフッター部分だけ左に20ピクセル程ずれて揃わなくなります。 どなたか解消出来る方おられませんでしょうか。

  • スタイルシートのpositionでフッターを位置指定するには

    こんにちは。今回ページレイアウトにテーブルではなくcssのpositionを使おうと思っているのですが、フッターの指定がうまくいきません。フッターの上のメインコンテンツや右カラム、左カラムが短い場合は問題ないのですが、長くなるとフッターにかかってしまいます。左カラム、メインコンテンツ、右カラムのどれが長くなっても常にフッターがページの最下部に下がるようにするにはどのように指定すればいいですか?ちなみに今こんな感じで指定しています。 フッターをbottom:0px;で指定すれば常に一番下に来ると思ったのですが…。スクロールしない範囲での一番下にしか来ません…。 /* 左カラム */ #left_column { position: absolute; top: 130px; left: 10px; background-color: #FFFFFF; width: 150px; /* height: 500px; */ border: 1px solid #000; padding: 0px; } /* メインコンテンツ */ #main_contents { position: absolute; top: 130px; left: 165px; background-color: #FFFFCC; width: 490px; /* height: 500px; */ border: 1px solid #000; padding: 10px; } /* 右カラム */ #right_column { position: absolute; top: 130px; left: 660px; background-color: #FFFFFF; width: 200px; /* height: 500px; */ border: 1px solid #000; padding: 10px; } /* フッター */ #footer { position: absolute; bottom: 0px; left: 10px; background-color: #EEE; width: 850px; border: 1px solid #000; padding: 20px; }

  • marginが効いてくれません。

    下記のレイアウトで#contentsのmarginを上下左右10pxで指定していますが、Fierfoxで見るとbottomだけmarginが効いてくれません。 #contentsには背景画像を持ってきたいので、下のmarginがとれないと困っています。 よろしくお願いします。 body { margin: 0px; padding: 0px; text-align: center; } #wrap { padding: 0px; margin-top: 0px; margin-right: auto; margin-bottom: 0px; margin-left: auto; width: 800px; text-align: left; } #header { background: #0099CC; width: 800px; } #contents { padding: 0px; width: 800px; margin: 10px; } #contents #sidenavi { background: #CCCCCC; width: 160px; float: left; } #contents #main { background: #FFFFCC; width: 580px; float: right; } #footer { background: #99CCFF; height: 80px; width: 800px; clear: both; } p{ margin: 0px; padding: 0px; } ****************************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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>Layout01</title> <style type="text/css" media="all"> @import url("Layout1.css"); </style> </head> <body> <div id="wrap"> <div id="header"> <h1>Layout</h1> </div> <div id="contents"> <div id="sidenavi">内容がここに入ります</div> <div id="main"> <p>内容がここに入ります</p> </div> </div> <div id="footer">内容がここに入ります</div> </div> </body> </html>

    • ベストアンサー
    • HTML
  • IEでは指定の位置に配置してくれません

    添付図のようにしたいのですが、 IEでは右に空白ができてしまい配置したいところに配置できません。 図のFireFox確認時の方が配置したい位置に配置できている正です。 タグ <div id="header"> <h1><a href="index.html"><img src="images/buyoon_syoukai_web_site.jpg" alt="ブヨーン商会WEBSITE" width="180" height="50" /></a></h1> <div id="gNavi"> <ul> <li><a href="information.html"><img src="images/information.jpg" alt="information" width="120" height="50" /></a></li> <li><a href="profile.html"><img src="images/profile.jpg" alt="profile" width="120" height="50" /></a></li> <li><a href="photograph.html"><img src="images/photograph.jpg" alt="photograph" width="120" height="50" /></a></li> <li><a href="bbs.html"><img src="images/bbs.jpg" alt="bbs" width="120" height="50" /></a></li> </ul> </div><!-- /gNavi --> </div> CSS /* レイアウト設定ここから */ #pageBody { width: 740px; margin-top: 0px; margin-right: auto; margin-left: auto; margin-bottom: auto; } #header { width: 740px; height: 50px; margin: 0px; padding: 0px; } #topFlContens { width: 740px; height: 320px; margin: 0px; padding: 0px; } #box { width: 740px; height: 550px; margin-top: 20px; margin-right: 0px; margin-left: 0px; margin-bottom: 0px; padding: 0px; } /* レイアウト設定ここまで */ #header h1 { width: 180px; height: 50px; margin-top: 0px; margin-right: px; margin-bottom: 0px; margin-left: 0px; padding: 0px; float: left; position: absolute; } #gNavi { list-style-type: none; width: 560px; height: 50px; margin-top: 0px; margin-right: 0px; margin-left: 220px; margin-bottom: 0px; float: right; position: absolute; } #gNavi ul { margin: 0px; } #gNavi li { list-style-type: none; margin: 0px; padding: 0px; float: left; } Web初心者のため、アドバイス頂けると幸いです。

    • ベストアンサー
    • HTML
  • 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
  • カラム高さ揃え+固定フッター

    いつもお世話になります。 ●確認ブラウザIE6、IE7、FF、 Mac Safari FF 左側幅可変のリキッドレイアウトの中で、 div#wrapの中にある「#boxB、#boxC」のカラム高さが揃った上で #footerはページ下部に固定されている、添付図の状態にしたい。 ●できてること: IE7、FFにおけるカラム高さの統一、固定フッタ ●ここができない: 1.IE6にてboxBとCの高さが揃わない(Cが足らない) 2.#wrapと#footerにすきまが空く(boxBとCの背景色がfooterの上まで来てほしいのです)(全部のブラウザにて) ★CSS /*リキッドレイアウト部分*/ * { margin:0; padding:0; } body { text-align:center; } #container { width:96%; margin-left:auto; margin-right:auto; text-align:left; } #boxA { background:#ffc; } #boxB { background:#fcc; width:100%; float:left; margin-right:-200px; } #boxB p { margin-right:200px; } #boxC { background:#ccf; width:200px; float:left; } #boxD { background:#cfc; width:100%; float:left; } /*100%固定フッタのためのCSS*/ *{ margin:0; padding:0; } html,body{ height:100%; background-color: #000000; color: #000000; } html{ overflow-y:scroll; } #container { width: 100%; position: relative; height: auto !important; height: 100%; min-height: 100%; } div#footer{ position:fixed; bottom:0; left:0; text-align:center; width:100%; } /* * * IE6 * * * */ * html, * html body{ overflow-y:hidden; } * html div#maincontents{ height:100%; overflow-y:scroll; } * html div#footer{ position:absolute; } /* カラム高さが違うものを揃える */ #wrap { overflow:hidden; } #boxB,#boxC { padding-bottom: 32768px; margin-bottom: -32768px; }

    • ベストアンサー
    • HTML
  • ドロップダウンメニューの位置調整ができません

    body設定は以下の通り body{ margin: 0; padding: 0; text-align: center;    ~   min-width: 900px; } このbodyにナビゲーションを設置して ドロップダウンメニューを配置しようとしていますが位置合わせができずに困っています 基本的な質問ですが、教えて下さい サブメニュー(ドロップダウンメニュー)のsccの記載は以下のように記載しました div#subMenu01 {position:absolute; top: 100px; left: 75px;} div#subMenu02 {position:absolute; top: 100px; left: 150px;} 結果、body枠からでなく、ブラウザ枠からの75px,150pxになってしまいます。 position:relativeにしても上下位置は変わりますが左右は変化しません。 どうしたらbody内で位置調整できるのでしょうか?

    • 締切済み
    • CSS
  • wordpressナビゲーションの固定をしたい

    wordpressテンプレートtwentytwelveを使用しています。 このナビゲーションメニュー(main-navigation)を、リキッドデザインではなく、ブラウザサイズを縮小しても、メニューボタンを縦に改行しないように固定にしたいのですが、方法がわかりません。 いろいろと方法を試したのですが、解決の糸口がつかめません。 どなたかお分かりになる方いらっしゃいますでしょうか? ----------------------------------------------- /* Assistive text */ .assistive-text, .site .screen-reader-text { position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .main-navigation .assistive-text:focus { background: #fff; border: 2px solid #333; border-radius: 3px; clip: auto !important; color: #000; display: block; font-size: 12px; padding: 12px; position: absolute; top: 5px; left: 5px; z-index: 100000; /* Above WP toolbar */ } /* Navigation Menu */ .main-navigation { margin-top: 24px; margin-top: 1.714285714rem; text-align: center; } .main-navigation li { margin-top: 24px; margin-top: 1.714285714rem; font-size: 12px; font-size: 0.857142857rem; line-height: 1.42857143; } .main-navigation a { color: #5e5e5e; } .main-navigation a:hover { color: #21759b; } .main-navigation ul.nav-menu, .main-navigation div.nav-menu > ul { display: none; } .main-navigation ul.nav-menu.toggled-on, .menu-toggle { display: inline-block; }

    • ベストアンサー
    • CSS
  • firefoxでmargin-topが効かない

    下記のソースとCSSでHPを制作しています、 ナビゲーション<ul id="menu">その下に <!-- content --> <div class="title">としてimgを入れてます、 ナビゲーションと<div class="title">の間に<div class="title">側で margin-top : 20px;を指定しました、IE6・7・8では希望通り表示されますがfirefoxではmargin-top : 20px;が無視されているのか ナビゲーションと<div class="title">の間がくっついて表示されます。 どなたか解決策、間違いがありましたらご指導ください、お願いします。 ソース記述 <!-- menu --> <ul id="menu"> <li id="mnu1"><a href="index.html" id="index.html" name="index.html" onmouseout="HpbImgSwap('_HPB_ROLLOVER1', 'menu/menu1.gif');" onmouseover="HpbImgSwap('_HPB_ROLLOVER1', 'menu/menu01.gif');"><img src="menu/menu1.gif" width="114" height="44" alt="HOME" name="_HPB_ROLLOVER1" /></a></li> 以下省略 </ul> <!-- /menu --> <!-- content --> <div class="title"><img src="img/titlebar.gif" width="772" height="37" alt="楽しいケーキ作り" /> <h2>まずは生地作りから</h2> <p>●********** <br /> <p> </div> CSS記述 ul#menu{ margin-top : 0px; margin-left : 0px; margin-right : 0px; margin-bottom : 0px; padding: 0px; } ul#menu li{ float : left; list-style-type : none; .title{ margin-left : 14px; margin-bottom : 5px; margin-top : 20px; width : 772px; } .title h2{ font-size : 15px; padding-top : 12px; padding-left : 23px; margin-bottom : 20px; font-weight : bold; font-family: Arial,"MS Pゴシック","MS UI Gothic",Osaka,Sans-Serif; margin-top : -40px; } .title p{ font-size : 14px; color : #ffffff; padding-left : 20px; line-height : 1.6; margin-bottom : 10px; margin-top : 0px; width : 772px; font-family: Arial,"MS Pゴシック","MS UI Gothic",Osaka,Sans-Serif; letter-spacing : 1px; } 以上宜しくお願いします。