【问题标题】:How can I make the menu to wrap when I resize my browser?调整浏览器大小时如何使菜单换行?
【发布时间】:2023-03-23 23:28:02
【问题描述】:

我一直在互联网上搜索,但我唯一得到的是如何在调整浏览器大小时避免/防止 div 元素环绕/浮动。我的问题恰恰相反:我有一个水平菜单,我试图在浏览器缩小时将元素(例如主页、联系人等)包裹起来,然后在浏览器最大化时返回其初始状态. 这是 HTML 文档:

<div id="menu">
<ul>
<li><a href="#index">Home</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#about">About</a></li>
</ul>

CSS 是这样的:

     #menu
          {border:1px;
           height: 40px;
           width: 400px;
           clear: both;
           float: left;
           position:relative;
           top:20px;}
     #menu ul
           {list-style-type:none;
            margin:0;
            padding:0;
            overflow:hidden;}
     #menu li
           {float:left;}
     #menu a:link,a:visited
           {display:block;
            width:100px;
            font-weight:bold;
            text-align:center;}

我尝试将高度和宽度更改为自动,删除/移动清除、浮动、溢出和位置标记,我什至将“#menu li”中的 float:left 更改为 float:none,然后是菜单即使我调整浏览器的大小,元素也会一个接一个地固定下来。 我也用 div 划分了每个菜单元素(不在下面的代码中),但没有任何成功。 我是否必须完全更改 CSS 代码或使用 js、jquery 等来执行此操作? 如果有,怎么做?

【问题讨论】:

    标签: html css menu word-wrap floating


    【解决方案1】:

    DEMO

    这可以通过移除固定的高度宽度来实现。

    未指定宽度的元素设置为width:auto,这通常是元素内容的大小。如果浮动元素不能相邻地放在页面上,它们将自动换行。

    CSS

    #menu{
        border:1px;
        clear: both;
        /*height: 40px; Remove*/
        /*width: 400px; Remove*/
        float: left;
        position:relative;
        top:20px;
        background:#58c;
    }
    #menu ul{
        list-style-type:none;
        margin:0;
        padding:0;
        overflow:hidden;
    }
    #menu li{
        float:left;
    }
    #menu a:link,a:visited{
        display:block;
        width:100px;
        font-weight:bold;
        text-align:center;
    }
    

    【讨论】:

    • 我之前做过,我删除了高度和宽度,然后将其设置为自动。我什至将“#menu li”中的 float:left 更改为 float:none,但随后菜单元素会固定在另一个下方,并且即使我调整浏览器大小,它们也会保持这种状态。无论如何,谢谢。
    • 您的代码在此答案中显示的演示中有效。您是否检查过其他样式是否覆盖了您的设置?在浏览器中按 f12 打开调试器并检查 #menu 元素以查看其宽度设置。
    • 是的,你是对的。太感谢了!问题解决了。我有另一个名为“all”的 div,它包含了 html 页面中的所有 div,并且它有一个宽度。事实是我没有考虑它,因为我将它设置得非常大:1300px(包括页面中的所有元素)。但似乎,即便如此,菜单也会被覆盖。
    【解决方案2】:

    您将 #menu 的宽度设置为 400 像素,这将固定该宽度,无论浏览器窗口有多宽。使用这个:

    width:100%;
    max-width:400px;
    

    【讨论】:

    • 是的,确实我以前没用过这个,但是......它仍然不起作用。似乎我无法弄清楚问题出在哪里。无论如何,谢谢。
    • 我遇到了 div 的问题,但现在我发现了,以百分比设置宽度或删除宽度和高度方法都可以正常工作。
    猜你喜欢
    • 2017-11-07
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多