タイトルだと分かりにくいですが、横並びのナビゲーションでクリック時にプルダウン表示させる挙動のときに、プルダウンの中身は画面幅に広げたいみたいなときの話です。
サンプルコード
最初にやろうとしてうまくいかなかったコードです。
HTML
<header> <ul id="nav"> <li class="level1"> <a href="">ナビ1</a> <ul class="level2"> <li><a href="">子ナビ1-1</a></li> <li><a href="">子ナビ1-2</a></li> <li><a href="">子ナビ1-3</a></li> </ul> </li> <li class="level1"> <a href="">ナビ2</a> <ul class="level2"> <li><a href="">子ナビ2-1</a></li> <li><a href="">子ナビ2-2</a></li> <li><a href="">子ナビ2-3</a></li> </ul> </li> <li class="level1"> <a href="">ナビ3</a> <ul class="level2"> <li><a href="">子ナビ3-1</a></li> <li><a href="">子ナビ3-2</a></li> <li><a href="">子ナビ3-3</a></li> </ul> </li> </ul> </header>
CSS
header { width: 100%; } #nav .level1 { position: relative; float: left; width: 100px; } #nav .level2 { display: none; position: absolute; top: 23px; left: 0; width: 100%; }
.level1を幅固定+floatして、.level2をwidth:100%;にしようと思っていたのですが、よく考えると.level1の幅を固定しているので.level2の幅も同じだけしか広がりませんでした。
うまくいかなかった場合のデモページ
サンプルコード2
.level2のposition:absolute;の基準を.level1ではなく、画面幅に表示されているheaderにすることで想定の表示になりました。
CSS
header { position: relative; width: 100%; } #nav .level1 { float: left; width: 100px; } #nav .level2 { display: none; position: absolute; top: 30px; left: 0; width: 100%; }
コメントが承認されるまで時間がかかります。