• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CSSによるタブメニューの構築について)

CSSによるタブメニューの構築について

このQ&Aのポイント
  • 可変幅のタブ形式メニューをスマートなHTMLで実現する方法について質問します。
  • 以下のHTMLでタブメニューを作成したいと思っています。使用する画像は左端・右端・テキスト部の背景となっており、タブの高さは29pxです。タブ内に何文字でも入力できる可変幅にしたいので、画像を分けることにしました。また、ul自体の配置位置を直接指定したいです。
  • GeckoとIEの両方に対応した描画エンジンを使用し、hackを避けたいと思っています。HTMLの改変は構わないですが、直接imgタグは使いたくないです。

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

  • ベストアンサー
  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.1

#tab及び#tab内のリストをfloatさせてます 後にくるboxにclearを付けるのを忘れずに 動作確認  IE win IE6  Gecko win firefox ■CSS #tab { position:absolute; top:100px; left:200px; background:url(tab_background.png) repeat-x; height:29px; list-style:none; padding:0; float:left; } #tab li { margin:0; padding:0; float:left; line-height:29px; background:url(tab_corner_left.png) top left no-repeat; } #tab li a{ display:block; padding:0 10px; background:url(tab_corner_right.png) top right no-repeat; } ■HTML <!-- 可変を再現するためにリンク文字列を伸ばしてます // --> <ul id="tab"> <li><a href="#">TabName1</a></li> <li><a href="#">TabName22</a></li> <li><a href="#">TabName333</a></li> <li><a href="#">TabName4444</a></li> </ul>

Dunkel
質問者

お礼

成る程、私はliにfloatではなくdisplay: inline;で横並びを実現していた為、上手く行かなかった様ですね…。 floatやline-heightの使い方が大変参考になりました。 ありがとうございました。 (一つ気になる点があったのですが、ulへのfloat:left;にはどんな意味があるのでしょうか)

その他の回答 (1)

  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.2

>(一つ気になる点があったのですが、ulへのfloat:left;にはどんな意味があるのでしょうか) widthを指定しないblock要素の場合、必然的にwidthは可能な限り上階層の幅に収まろうとします その際、#tabの背景指定の background:url(tab_background.png) repeat-x; でx方向にリピートしているので上階層の幅が広い場合無駄に背景が描画されてしまうのです 今回はposition:absolute;を使用することによって、一種の浮遊配置となり、#tab内のコンテンツ内容によってwidthが決まるので背景はコンテンツ分だけリピートされます そしてfloatの設定なのですが、こちらも上記同様の効果が得られるのです 今回floatの設定を入れた理由は、今後positionの設定がrelativeもしくは排除された際に背景を無駄にリピートさせない為に、ちょっとしたおまじないのつもりでつけました 今後もずっとposition:absolute;でやっていくのなら、消してしまっても構いません ■背景リピートの変化を確認する方法 position:absolute;を消してから float:left; を入れる、入れないで挙動を確認してみて下さい

Dunkel
質問者

お礼

成る程、そういう事でしたか。 大変参考になりました。ありがとうございます。

関連するQ&A