- ベストアンサー
メニューの横スクロールバーを消したい
- ドロップダウンメニューをセンタリング表示しているのですが、横スクロールバーが出てしまいます。
- overflow:hiddenを使用するとドロップダウンが非表示になってしまうため、解決方法が見つかりません。
- ul.menuの中のleft:50%を消すと横スクロールバーが消えますが、中央揃えにならなくなります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
不必要なclass名やidを書き連ねるとHTMLもCSSも煩雑になります。折角のCascading style Sheetなのですからカスケーディングを使わなきゃ・・ ・継承するものは継承させる。 ・同じプロパティはセレクタのグループ化で一度しか書かない ・セレクタで特定できるものまで、不必要なidやclass名は書かない。 ・ひとつのHTML要素に関わる部分は、スクロールなしに見渡せるよう整理する。 サンプルは外形だけですが、HTMLもスタイルシートもこんな簡単でわかりやすいもので済むはずです。それでいて、スマートホンから幅広ディスプレイに対応しています。(ウィンド幅を伸縮して確認してください。また、固定スタイルにするときは設定を変更してください。) まあ、スタイルシートは20~30行程度に抑えるとメンテナンスが楽です。 プルダウンメニューについて、本来はdispaly:inline-block;とtext-align:centerを組み合わせるべきですが、古いブラウザを考慮するとfloat:leftも致し方ないでしょう。 ★いずれも、タブが全角スペースに置換してあるので戻すこと。 [HTML]class名のnavはHTML5の要素名、将来HTML5に変更すると気楽なので・・ <div class="nav" id="global-nav"> <ul> <li>イメージ画像</a> <ul> <li>ドロップダウン</li> <li>ドロップダウン</li> <li>ドロップダウン</li> </ul> </li> <li>イメージ画像</a> <ul> <li>ドロップダウン</li> <li>ドロップダウン</li> </ul> </li> <li>イメージ画像</a> <ul> <li>ドロップダウン</li> </ul> </li> <li>イメージ画像</a> <ul> <li><a href="dl-1.html">ドロップダウン</a></li> <li><a href="dl-2.html">ドロップダウン</a></li> <li><a href="dl-3.html">ドロップダウン</a></li> </ul> </li> </ul> </div> [CSS]子セレクタやinline-blockを理解しない古いブラウザを考慮して長ったらしくなってます。 div.nav ul,div.nav ul li{ display:block;list-style:none; margin:0;padding:0; line-height:40px;text-align:center; } div.nav ul{ width:80%;height:40px; margin:0 auto;min-width:640px;max-width:1000px; background-color:#999; } div.nav ul li{width:25%;float:left;position:relative;} div.nav ul li ul li{float:none;background:#d1d1d1;} div.nav ul li ul{width:100%;position:absolute;background-color:transparent;} div.nav ul li ul{display:none;} div.nav ul li:hover ul{display:block;} div.nav ul li a{display:block;}
お礼
ありがとうございました!