CSS如何使水平菜单栏在整个页面宽度上伸展

时间:2015-01-20 13:14:34

标签: css menu mouseover navbar stretch

我正在为朋友制作一个网站,并且正在努力使用菜单栏的CSS。当他问等等时,我已经对它进行了解决,但我遇到了一些问题。

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

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

3)我怎样才能这样做,点击主菜单会显示相关的子菜单并保持不变直到页面上的其他地方点击(即所以你不必按住鼠标悬停来选择子菜单)

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%;
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

此外,您的菜单栏移动的原因是因为您将.subnav ul定位为static时应将其定位为absolute。像这样:

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

将元素定位为绝对意味着它不占用页面上的空间,这意味着它不会推动其他元素。