Html 放大时保持导航栏的结构

Html 放大时保持导航栏的结构,html,css,Html,Css,我使用html和css创建了一个简单的导航栏。问题是放大时,结构会发生变化,因为并非所有链接都可以放在一行中。以下是JSFIDLE: 以下是您无法访问JSFIDLE时的代码: <div id="navBar"> <ul> <li class="nav"><a href="#">HOME</a></li> <li class="nav"><a href="#">P

我使用html和css创建了一个简单的导航栏。问题是放大时,结构会发生变化,因为并非所有链接都可以放在一行中。以下是JSFIDLE:

以下是您无法访问JSFIDLE时的代码:

<div id="navBar">
    <ul>
        <li class="nav"><a href="#">HOME</a></li>
        <li class="nav"><a href="#">PRODUCTS</a></li>
        <li class="nav"><a href="#">SERVICES</a></li>
        <li class="nav"><a href="#">CONTACT US</a></li>
        <li class="nav" id="order"><a href="#">ORDER</a></li>
    </ul>
</div>

#navBar {
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    color:#5a5a5a;
    font-size:12px;
    font-weight:bold;
    background-color:#eeeeee;
    padding:0.1em;
    box-shadow: 5px 5px 5px #888888;
}

.nav {
    list-style:none;
    display:inline;
    border-left:3px solid;
}

.nav a {
    text-decoration:none;
    color:inherit;
    padding: 0 20px 5px 20px;
}

.nav a:hover{
border-bottom:3px solid;
}

#order {
    float:right;
    color:#E65C00;
}

#导航栏{ 字体系列:“Helvetica Neue”,Helvetica,Arial,无衬线; 颜色:#5A5A; 字体大小:12px; 字体大小:粗体; 背景色:#eeeeee; 填充:0.1米; 盒影:5px 5px 5px#8888888; } .导航{ 列表样式:无; 显示:内联; 左边框:3倍实心; } .导航a{ 文字装饰:无; 颜色:继承; 填充:0 20px 5px 20px; } .导航a:悬停{ 边框底部:3倍实心; } #命令{ 浮动:对; 颜色:#E65C00; }
我尝试过各种方法,但都没有成功。我想知道的一个方法是,我是否可以编辑它,使它在不合适的情况下从页面中流出(因此一次只能看到导航栏的一部分宽度),但我似乎无法围绕它工作。我认为另一种方法是检测屏幕宽度/缩放,如果可用空间太小,则完全改变结构,但我不确定这是否可行(我已经研究过了,但没有发现任何像我描述的那样工作的方法)

以防万一:我发现的一件事是浮子可能会阻止我解决这个问题


有没有办法解决这个问题?如果有,怎么解决?我不介意它是如何工作的(例如,从屏幕上消失或放大整个导航栏),只要它能工作。我已经在这个问题上坚持了三天了(我还是个新手)因此,任何帮助都将不胜感激。

这个问题是因为float考虑的是导航栏的100%宽度。添加一个以像素为单位的宽度来固定导航栏的大小,如下所示

#navBar {
    width: 550px;
}

尽管这会导致元素从当前窗口流出(并因此带来滚动条)。在这种情况下,最好的办法是使内容响应并为不同的宽度创建不同的样式。

当您放大页面时,视口的大小正在减小。 这意味着您可以使用媒体查询创建适当的断点:

@media screen and (max-width:600px) {
    #navBar {
        font-size:5px;
    }
}
600px标记在我的测试用例中运行良好。但是您无法通过JSFIDLE复制它。5px不会太小,因为您已经放大了。但是,最好的方法是使用em值而不是px,因为它们允许更改参考字体大小:
body{font size:0.9em;}
。这将被任何其他元素继承。

我找到了一个解决方案(它可能对所有看到这一点的人都没有用处,但却是解决问题的一个备选方案)。我将向右浮动的li元素放在一个单独的div中,以便放大时它不会下降到其他元素的下方或重叠。相反,其他li元素会在重叠之前下降,同时仍能正常工作

在HTML中,#order元素(float right)位于div中,其他li元素位于新div中

<div id="navBar">
    <div>
        <ul>
            <li class="nav" id="order"><a href="#">ORDER</a></li>
        </ul>
    </div>
    <div>
        <ul>
            <li class="nav"><a href="#">HOME</a></li>
            <li class="nav"><a href="#">PRODUCTS</a></li>
            <li class="nav"><a href="#">SERVICES</a></li>
            <li class="nav"><a href="#">CONTACT US</a></li>
        </ul>
    </div>
</div>


这里有一个正在工作的JSFIDLE来说明我的意思:

有什么特别的宽度我应该设置吗?我试过了,540稍微太小了,因为订单链接比其他链接稍低,因为它不太合适,但是如果太大,肯定会使它太宽,不适合某些窄屏幕。你必须进行实验,并尝试找到完美的width、 我认为拥有大约545-550应该是好的。在添加代码之前,尝试在控制台中进行快速加载。加载页面时,页面的宽度是否自动适合屏幕宽度,因此像素宽度被用作比例方法?我可能不清楚,但我的意思是,如果将宽度设置为idk 540px,那么在270px的宽度下,无论实际屏幕大小如何,都只占屏幕的一半?不,实际上,元素的宽度取决于其组成部分。如果组成部分可以容纳在小于窗口宽度的范围内,它将尝试这样做。但除非指定,否则它永远不会使组成部分超出当前窗口(除非为每个元素指定位置,否则将导致进一步的问题)。此外,不要试图将屏幕大小与像素混淆。屏幕的分辨率也可以是1366x768,也可以是640x480。对于640x480,240可能是一半大小,但对于1366x768,则不是。我尝试了你的建议,效果不错,但是它不需要根据其他人使用的屏幕大小而有所不同吗?我已经看过/尝试过css media询问了这个答案,但是我仍然无法让它工作…我想我会继续尝试,我发现你的问题是它工作到一定程度,但放大会进一步导致问题再次出现。对此有任何进一步的反馈/建议吗?谢谢。