javascript - HTML/CSS 下拉菜单 <li> 宽度

标签 javascript html css menu width

我想用 HTML/CSS 和一些 javascript 制作一个下拉菜单。我坚持使用 li 元素的宽度。它必须具有内部内容的宽度,而不是静态宽度。

问题是当我将鼠标悬停在 li 元素上时(显示下拉菜单)它正在改变他的宽度。

我创建了一个 jsfiddle 文件,你可以找到它 here.

CSS:

  #nav{
        background-color: #1da8d8;
        width: 100%;
        max-width: 960px;
        margin: 0;
        padding: 0;
        float: left;
    }

    #nav li a i {
        text-align: right;
    }

    #nav ul {
        padding: 0;
        margin:0;
        list-style: none;
        width:12em;
        z-index:99;
        position:relative;
        overflow:visible;
    }

    #nav li {
        background-color: #1b9cc9;
        position: relative;
        line-height: 39px;
        height: 40px;
        width: auto;
        margin: 0 5px 0 0;
        float:left;
        display:block;
    }
    #nav ul li{
        background-color:#1b9cc9;
        top: 20px;
        width: 12em;
        float: left;
    }

    #nav a {
        color: #ffffff;
        text-decoration:none;
        display:block;
        padding: 0.1em;
        margin: 0 0.2em 0 0;
        height:1.05em;
        width: auto;
    }

    #nav ul li:hover, #nav ul li a:hover{ background-color:#1da8d8;}


    #nav ul{
        display:none;
    }

    /*all see this */
    #nav ul ul, #nav ul ul ul{
        display:none;
        position:absolute;
        margin-left:12em;
    }

    /* non-IE browsers see this */
    #nav ul li>ul, #nav ul ul li>ul{
        margin-top:-1.8em;
    }

    #nav li:hover ul ul, #nav li:hover ul ul ul, #nav li:hover ul ul ul ul, #nav li:hover ul ul ul ul ul{
        display:none;
    }

    #nav li:hover ul, #nav ul li:hover ul, #nav ul ul li:hover ul, #nav ul ul ul li:hover ul, #nav ul ul ul ul li:hover ul{
        display:block;
    }

    li>ul {
        top: auto;
        left: auto;
    }

最佳答案

宽度现在自动调整为 child 的完整宽度。将 child 的位置设置为绝对会忽略这一点。

#nav ul 上的 postition:relative; 更改为 position:absolute;

#nav ul {
    padding: 0;
    margin:0;
    list-style: none;
    width:12em;
    min-width:100%;
    z-index:99;
    position:absolute;
    overflow:visible;
}

http://jsfiddle.net/UtzJh/1/

关于javascript - HTML/CSS 下拉菜单 <li> 宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695118/

相关文章:

css - 设置固定位置时div消失

javascript - 如何检索可视化放置在 div 下的元素

javascript - 如果使用 jquery/javascript 锁定 iphone,如何提交表单

javascript - 如何使用 Sequelize - Mocha Node 和 javascript 连接到数据库

html - 如何使用 scrollspy 在顶部下拉导航中显示当前部分名称?

javascript - javascript可以自定义css的@rule吗?

java - 使用我的网络应用程序在 Facebook 上分享图像

PHP 电子邮件和 URL 验证

html - 为什么该段落隐藏在导航栏后面,但导航栏在 html 源代码中排在第一位?

php - 将页面从 html 转换为 php 后的位置问题