【问题标题】:CSS How to Make Horizontal Menu Bar stretch across full page widthCSS如何使水平菜单栏横跨整个页面宽度
【发布时间】:2015-01-20 13:14:34
【问题描述】:

我正在为一个朋友制作一个网站,并且正在为菜单栏的 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%;
}

【问题讨论】:

    标签: css menu mouseover navbar stretch


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我已经实现了这两项更改。由于某种原因,菜单仍然没有伸展 - 我主要是在 Dreamweaver 的实时视图中执行此操作。 .navbar ul li .subnav 改变位置并没有多大作用,但是改变 .navbar ul li:hover ul.subnav 的位置绝对有帮助。菜单不再移动,但是我得到了一个副作用,即子菜单现在延伸到整个页面宽度,而实际上我只是希望子菜单外框与该子菜单中最长的行一样长。谢谢你的建议,关于拉伸问题有什么想法吗?
    • 将 .navbar ul li .subnav 更改为 absolute 不起作用的原因是它被应用位置静态的悬停效果覆盖。在实际元素上指定位置比在悬停时更好。
    • 此外,在您的 css 中您说 .navbar ul {width:100%} 这使导航栏类内的任何 ul 元素都具有 100% 的宽度。它还设置为显示块,如果您不设置宽度,它将自动使其伸展到 100% 宽度。尝试设置 .subnav 类的宽度。如果您需要更多帮助,请尝试在 jsfiddle.net 上重现您遇到的问题
    【解决方案2】:

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

    【讨论】:

    • min-width: 100% 在导航栏类中没有区别。回家后将图像更改为彩色。导航栏类现在看起来像: .navbar { font-family:"AEnigma Scrawl";字体大小:32px;文本对齐:左;高度:80px;宽度:100%;最小宽度:100%;字体粗细:正常;文字阴影:1px 1px #000000; }
    猜你喜欢
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2016-07-26
    • 1970-01-01
    • 2011-09-06
    • 2016-09-23
    相关资源
    最近更新 更多