CSS 如何使水平菜单栏横跨整个页面宽度

CSS How to Make Horizontal Menu Bar stretch across full page width

我正在为朋友制作一个网站,并且正在为菜单栏的 CSS 苦苦挣扎。我已经按照他的要求等进行了设计,但遇到了一些问题。

1) 我无法让它横跨页面的整个宽度。菜单本身应该横跨页面的整个宽度,将页面的宽度分成 6 个,每个菜单项中的文本要集中并保持相同的大小,只是添加额外的黑色背景以适应页面宽度。 (大多数会看它的用户显然会使用 1920 x 1080) 像这样(忽略顶部的框 - 它们只是颜色测试): http://i58.tinypic.com/1z2zkf8.png

2) 当我将鼠标悬停在子菜单的菜单项上时,主菜单会自行重新调整。我怎样才能阻止它这样做,以便它保持菜单按钮的静态宽度? (即页面宽度的 1/6)

3) 我怎样才能做到这样点击主菜单会显示相关的子菜单并保持它直到点击页面上的其他地方(即你不必将鼠标悬停在 select 子菜单)

HTML:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Navigation</title>
<link href="navigation.css" rel="stylesheet" type="text/css">
</head>

<body>
<div class="navbar">
  <ul>
    <li><a href="index.html">Home</a></li>
    <li><a href="clan.html">Clan</a>
        <ul class="subnav">
            <li><a href="aboutus.html">Really? You made a website for this?</a></li>
            <li><a href="roster.html">Member Roster</a></li>
            <li><a href="join us.html">One of us...</a></li>
        </ul>
    </li>
    <li><a href="games.html">Games</a>
        <ul class="subnav">
            <li><a href="gameslist.html">Current Games Rotation</a></li>
            <li><a href="buylist.html">Games You Really Need To Buy</a></li>
            <li><a href="steamlist.html">Clan Steam Account</a></li>
            <li><a href="the_gaz_cave.html">Wargame Decks</a></li>
            <li><a href="gamerandomiser.html">Leon's Wheel o' Games</a></li>
        </ul>
    </li>
    <li><a href="events.html">Events</a>
        <ul class="subnav">
            <li><a href="thursday.html">Thursday Game Night</a></li>
            <li><a href="ilan.html">ILAN</a></li>
        </ul>
    </li>
    <li><a href="donate.html">Donate</a>
        <ul class="subnav">
            <li><a href="paypal.html">Help Us Not Be Poor</a></li>
            <li><a href="easyfund.html">Help Us Even If You're Poor</a></li>
        </ul>
    </li>
    <li><a href="othershit.html">Other Shit</a>
        <ul class="subnav">
            <li><a href="links.html">Links to Shit</a></li>
            <li><a href="takemymoney.html">Cheap as Shit Games</a></li>
            <li><a href="stats.html">Stats 'n' Shit</a></li>
            <li><a href="downloads.html">Downloadable Shit</a></li>
        </ul>
    </li>
  </ul>
</div>
</body>
</html>

CSS:

 @import url("AEnigma_Scrawl/stylesheet.css");
.navbar {
    font-family: "AEnigma Scrawl";
    font-size: 32px;
    text-align: left;
    height: 80px;
    width: 100%;
    font-weight: normal;
    text-shadow: 1px 1px #000000;
}
.navbar ul {
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
    margin-left: 0px;
    padding-top: 0px;
    padding-right: 0px;
    padding-bottom: 0px;
    padding-left: 0px;
    list-style-type: none;
    width: 100%;
}
.navbar ul li {
    float: left;
}
.navbar ul li a {
    text-decoration: none;
    color: #FFFFFF;
    padding-top: 5px;
    padding-right: 5px;
    padding-bottom: 5px;
    padding-left: 5px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
    margin-left: 0px;
    background-image: url(bg_navbar.png);
    border-top: 1px solid #FFFFFF;
    border-bottom: 1px solid #FFFFFF;
}
.navbar ul li a:hover  , .navbar ul li a:active, .navbar ul li a:focus{
    background-image: url(bg_navbar_hover.png);
}
.navbar ul li a.current {
    background-image: url(bg_navbar_current.png);
}
.navbar ul li .subnav   {
    display: none;
}
.navbar ul li .subnav li {
    float: none;
}
.navbar ul li .subnav li a {
    font-size: 18px;
}
.navbar ul li:hover ul.subnav {
    display: block;
    position: static;
}
.navbar ul li:hover ul.subnav a {
    display: block;
    width: 100%;
}

尝试在导航栏上添加 min-width: 100%。 同时将菜单背景从图像更改为颜色。

您的菜单栏未在整个页面上延伸的原因可能是因为浏览器通常会自动为 html/body 添加边距。尝试设置此 css:

 html,
 body
 {
 margin:0;
 padding:0;
 }

另外,您的菜单栏移动的原因是因为您将 .subnav ul 定位为 static 而它应该定位为 absolute。像这样:

 .navbar ul li .subnav
 {
 position:absolute;
 } 

将元素定位为绝对元素意味着它不会在页面上占用 space,因此这意味着它不会将其他元素推开。