• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【CSS】float横並びメニューに余白ができてしまいます)

【CSS】float横並びメニューに余白ができてしまいます

このQ&Aのポイント
  • リストをfoat:leftさせ横並びのメニューを作っています.左右に余白ができてしまいます.
  • 余白をなくす方法を調べても分からないため、教えていただきたいです.
  • CSSのソースコードも含めて質問します.

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

  • ベストアンサー
  • abril
  • ベストアンサー率69% (388/560)
回答No.4

> 全体が左に寄りすぎてHPの背景からはみ出してしまいました. 補足のソースを拝見しましたが、幅830pxのmid-backの領域に対して、幅770pxのglobalnaviの領域が左右方向に均等の余白を持ってセンタリングされず、mid-backの左端に揃って描画されてしまう…という状態と解釈して宜しいですか? その状況は、IE6/7以外のFirefox等のブラウザで起きていますよね?前者であれば親要素のmid-backの"text-align: center;"の指定が(間違って)効いてしまうので、現状のままでもglobalnaviはセンタリングされていると思いますので… "text-align: center;"の本来の役目はテキストなどのインライン要素に対するセンタリングであり、ブロック要素(div等)の位置自体をセンタリングする性質は持っていません(IEでの結果は正しくない解釈に依るものです)。それは左右marginをautoにする事で調整できるので、下記の様に修正を加えてみて下さい。 .globalnavi{ (省略) margin: 0 auto; (省略) } こうする事で、globalnaviはwidthが770pxと決め打ちされているので、親要素のmid-backの830pxの幅から770pxを引いた残りの分(60px)が左右の余白として均等に割り振られる(左マージン30px/右マージン30pxとなります)ので、結果としてセンタリングされて表示されます。

その他の回答 (3)

  • abril
  • ベストアンサー率69% (388/560)
回答No.3

> スペルミスとは,恥ずかしいかぎりです いえ、結構ある事ですので、なんかいくらやってもおかしい…と思ったら、先ずは設定したCSSのセレクタとHTMLのマークアップがちゃんと対になっているかどうかを確かめてみる、という習慣を付けると良いですよ。 > 全体が左に寄りすぎてHPの背景からはみ出してしまいました. それは本件とは別の問題ですね。globalnaviの親要素との兼ね合いに不具合があると思われますが、その部分の情報を提供して頂かないとわかりません。

Falcon2
質問者

補足

globalnaviの親要素はmid-backでプロパティーは以下の様になっています. .mid-back{ border:1px solid #cc0000; width:830px; margin:0px auto 0px auto; padding:0px 0px 0px 0px; background: url(../image/back-mid.gif) repeat-y center ; text-align:center; } なおHTMLは以下の様になっています.よろしくお願いします. -------------HTML-------------------------------------------------- <div class="mid-back"> <div class="globalnavi"> <ul> <li id="m1" title="研究室紹介へのリンク"><a href="#"><span>大学紹介</span></a></li> <li id="m2" title="スタッフへのリンク"><a href="#"><span>スタッフ</span></a></li> <li id="m3" title="研究設備へのリンク"><a href="#"><span>研究設備</span></a></li> <li id="m4" title="アーカイブへのリンク"><a href="#"><span>アーカイブ</span></a></li> <li id="m5" title="外部リンクへのリンク"><a href="#"><span>リンク</span></a></li> </ul> </div><!--div globalnavi finish--> <image src="image/top1.jpg" border="none" > <div class="mid"> あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ </div> <!--div mid finish--> </div><!--div mid-back finish--> -------------------------------------------------------------------

  • abril
  • ベストアンサー率69% (388/560)
回答No.2

CSSにスペルミスがありますね。 .gloabalnavi ul{ (省略) } 正しくは .globalnavi ul{ (省略) } です。スペルミスの為、HTML側のマークアップに対応しておらず、ulのマージンが初期化されていなかっただけですね。 なので、li#m5のwidthも154pxで正解です。

Falcon2
質問者

お礼

スペルミスとは,恥ずかしいかぎりです(汗 修正後,全ての要素がちゃんと表示されましたが,全体が左に寄りすぎてHPの背景からはみ出してしまいました.

  • abril
  • ベストアンサー率69% (388/560)
回答No.1

実際にサンプルを検証していませんが、提供された情報を見ると単純に計算を間違っていると思いますが。 globalnaviの幅が770pxなのに対し、子要素liの幅の合計が154px×4+150px=716pxなのでぴったりに並べるには54px足りません。 下記だけ100pxになっているのは何故ですか? li#m5{ width:100px; (省略) }

Falcon2
質問者

補足

当初は5番目の要素もwidth154pxでしたが,それでは余白が現状と同じで5番目の要素が表示されなかったので5番目の要素を表示させようと幅を小さくした結果です.