浮动嵌套李

时间:2009-07-03 22:04:45

标签: css

我正在尝试创建一个垂直菜单,我需要创建一个多列子菜单。我的代码如下所示:

<style type="text/css" media="screen">


#nav {
        width: 100px;
    }
    #nav li {
        position: relative;
        background-color: red;
    }
    #nav li:hover .subnav {
        display: block;
    }
    .subnav {
        position: absolute;
        top: 0;
        left: 100px;
        display: none;
    }
    .subnav > li {
        float: left;
    }
</style>



<ul id="nav">
    <li>
        <a href="#">Link 1</a>
        <ul class="subnav">
            <li>
                <ul>
                    <li>Col 1.1</li>
                    <li>Col 1.2</li>
                </ul>
            </li>
            <li>
                <ul>
                    <li>Col 2.1</li>
                    <li>Col 2.2</li>
                </ul>
            </li>
            <li>
                <ul>
                    <li>Col 3.1</li>
                    <li>Col 3.2</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

我的问题是为什么.subnav&gt;李不飘左?我不想设置宽度属性,因为我不知道子菜单项会有多长。

2 个答案:

答案 0 :(得分:4)

我认为它不起作用的原因是因为这部分CSS:

#nav {
    width: 100px;
}

这不会使子导航器处于任何水平空间,因此所有浮动包裹到下一行。从#nav中删除宽度似乎让它做正确的事情。如果这样做,您必须确保顶级菜单项的文本长度不超过100像素;否则,子导航将重叠。

(但它在IE中仍然不起作用)。

答案 1 :(得分:0)

这是一个可行的解决方法:

.subnav ul li {
    display: inline;
}

(如果这是一个问题,悬停似乎在IE中不起作用)。