メニューとサブメニューが水平方向に中央に配置されているが、div がページ幅全体に拡張されている、作業中の Web サイトのソリューションを作成しようとしています。
まず、サンプル HTML を次に示します。
<div id="menu-container" class="full-width">
<nav id="nav1" class="normal-width">
<ul class="main-menu">
<li id="item1">
<a href="#">item 1</a>
<ul class="sub-menu">
<li id="item11">
<a href="#">item 1.1</a>
</li>
<li id="item12">
<a href="#">item 1.2</a>
</li>
<li id="item13">
<a href="#">item 1.3</a>
</li>
</ul>
</li>
<li id="item2">
<a href="#">item 2</a>
<ul class="sub-menu">
<li id="item21">
<a href="#">item 2.1</a>
</li>
<li id="item22">
<a href="#">item 2.2</a>
</li>
</ul>
</li>
<li id="item3">
<a href="#">item 3</a>
</li>
</ul>
</nav>
</div>
このメニューの CSS は次のとおりです。
.full-width {
width: 100%;
}
.normal-width {
width: 1024px;
margin: 0 auto 0 auto;
}
a {
color: black;
text-decoration: none;
}
.clear {
clear: both;
}
.main-menu {
list-style-type: none;
margin: 0;
padding: 0;
position: relative;
background-color: red;
}
.main-menu > li {
float:left;
margin-right:2em;
}
.sub-menu {
list-style-type: none;
margin: 0;
padding: 0;
display:none;
background-color: orange;
}
.sub-menu li {
float:left;
margin-right:2em;
}
.main-menu > li.selected {
background-color:orange;
}
.main-menu > li.selected .sub-menu {
display:block;
position:absolute;
left:0;
right:0;
}
関連する jQuery は次のとおりです。
// Add a clear div to allow adding background color to main-menu
$(".main-menu").append("<div class='clear'></div>");
// Make the first class selected
$(".main-menu > li:first").addClass("selected");
// Switch the selected class
$(".main-menu > li").click(function() {
$(".selected").removeClass("selected");
$(this).addClass("selected");
});
// Disable menu links
$(".main-menu > li > a").click(function(e) {
e.preventDefault();
});
すべてが素晴らしくダンディで、適切な水平メニューが作成されます。私が苦労していて作成できないのは、この写真でわかるものです。
画像については、次の点に注意してください。
画像の周りの黒い太い境界線は、Web ページのフル サイズと幅 (つまり、ブラウザー ウィンドウの境界線) です。
中央の紫色の細い縦線は見えません。コンテンツがどこにあるかを示すために画像に表示されています。つまり、紫色の線の左端または右端にはコンテンツがありません。
最上位のメニュー項目の背景は赤です
サブメニューは、オレンジ色の背景の領域に表示されます
さて、問題に:
赤と黄色の背景が Web ページの端まで伸びていることに注目してください。これらのページのアイテムは、紫色の線の内側のコンテンツ領域に表示されます。これは私が達成しようとしていることですが、できません。背景を Web ブラウザーの端 (つまり、ページ全体の幅) まで拡張できません。私のソリューションは、赤とオレンジの背景を中央に配置します。