导航条在较小的分辨率上换行

问题描述 投票:8回答:3

我正在尝试学习HTML5 / CSS3,但我一直在努力创建一个导航栏,以链接到我页面上其他部分的链接。我从找到的教程中改编了代码,它可以工作,但仅当以1080p分辨率查看时,如果宽度较小,则该条会换行。

无论用户使用什么分辨率,如何确保导航栏仅占用一行(缩小以适应)?

“

这是我的导航栏的CSS代码。请注意,在导航下,我将宽度设置为33.3%,并将填充设置为相同,以使按钮居中。我不知道这是不是原因。

nav {
    display:block;
    position: absolute;
    left:0; 
    white-space:nowrap; 
    margin: 0 auto; 
    width: 33.3%; 
    background-color:#ff6600;
    padding-left: 33.3%; 
    padding-right: 33.3%; 
} 

nav ul { 
    margin: 0 auto; 
    width: 100%; 
    list-style: none;
    display: inline;
    white-space:nowrap; 
} 

nav ul li { 
    float: left;
    position: relative;
    white-space:nowrap; 
} 

nav ul li a { 
    display: block; 
    margin: 0 auto; 
    width: 150px; 
    font-size: 16px;
    font-family: century gothic; 
    line-height: 44px; 
    text-align: center; 
    text-decoration: none; 
    color:#575757;
    white-space:nowrap; 
} 

nav ul ul { 
    width: 200px;
    position:absolute; 
    top:-99999px; 
    left:0; 
    opacity: 0; 
    -webkit-transition: opacity .4s ease-in-out; 
    -moz-transition: opacity .4s ease-in-out; 
    -o-transition: opacity .4s ease-in-out; 
    transition: opacity .4s ease-in-out; 
    z-index:497; 
    background:#333; 
    padding: 2px; 
    border:1px solid #444; 
    border-top:none; 
    box-shadow:#111 0 3px 4px; 
}


nav ul ul li a { 
    display: block;
    width: 200px;
    text-align: left;
    padding-left: 3px;
    font-size: 14px;    
}   



nav ul li:hover>ul{
    opacity: 1; 
    position:absolute; 
    top:98%; 
    left:0;

}


nav ul li a:hover { 
    color: #fff;
    background-color: #cc3300 
} 

nav ul li.selected a { 
    color: #fff; 
    background-color: #cc3300; 
}
css html5 css3 navbar
3个回答
11
投票

您几乎正确地做到了。 CSS的问题是white-space: nowrap;仅适用于inline元素-但是您正在使用float。即使将display: inline;属性设置为此类元素,浮动元素也会变为块级(不会应用)。因此-如果您将浮标替换为display: inline-block;-您的white-space属性将起作用:)

这里有inline-blockwhite-space的实时示例:http://jsfiddle.net/skip405/wzgcH/

关于您的居中方法-有更好的解决方案。 (您可以删除padding并设置适当的宽度),尤其是在使用嵌入式块时。只需将text-align: center;设置在其parent上-即可将其居中。


0
投票

问题是您将nav宽度设置为仅33.3%,其余部分为填充。当调整大小超过某个点时,较小的允许空间会将所有元素推向彼此下方。要阻止这种情况的发生,您可以做两件事,将导航宽度设置为100%,其次,如果您根本不希望调整大小,则必须将其总和设为min-width a元素的宽度放在一起。除非您使用的是响应式设计,否则您也很可能也应该给它一个max-width。这是我与修改后的CSS结合在一起的演示:http://jsfiddle.net/c3HE6/


0
投票

这里的另一个不错的选择是,如果您不想浏览并更改导航栏中每个元素的显示属性,只需指定导航栏的样式以具有最小宽度即可。当您减小屏幕尺寸时,这可以防止自动换行。

© www.soinside.com 2019 - 2024. All rights reserved.