是否可以在具有固定高度的菜单上创建纯CSS子菜单?

时间:2013-03-21 21:19:46

标签: overflow submenu css

我有一个垂直菜单,其中包含一些子菜单,这些子菜单显示在该项目的右侧。这大部分工作正常,但主菜单上可能有很多项目,所以我想要一个垂直滚动条的最大高度。

问题是如果我在主菜单上设置overflow:auto,则子菜单不再正确显示,因为它不会溢出主菜单宽度。

这是我的代码http://jsfiddle.net/FK8p6/的示例。如果从.menu类中删除overflow:auto,则可以看到子菜单正常工作,但当然主菜单不再正确显示,那么。

HTML:

<ul class="menu">
    <li>Menu 1</li>
    <li>Menu 2</li>
    <li>Menu 3</li>
    <li>Menu 4</li>
    <li>Menu 5</li>
    <li>
        Menu 6
        <ul class="menu submenu">
            <li>SubMenu 1</li>
            <li>SubMenu 2</li>
            <li>SubMenu 3</li>
        </ul>
    </li>
</ul>

CSS:

.menu
{
    padding: 5px;
    list-style-type: none;
    background-color: #99f;
    max-height: 80px;
    width: 100px;
    overflow: auto;
}

.menu li
{
    border: #ddd 1px solid;
    position: relative;
    line-height: 24px;
    cursor: default;
}

.menu li:hover
{
    background-color: #d1e7ff;
}

.submenu
{
    max-height: none;
    background-color: #fff;
    padding: 0;
    position: absolute;
    top: -1px;
    left: 100%;
    display: none;
}

.menu li:hover .submenu
{
    display: block;
}

我知道我可以在heirarchy的主菜单之外拉出子菜单,然后使用javascript来定位它。但后来我失去了纯CSS菜单,它也不再是语义。如果必须,我可以忍受,但如果可能的话,我想找到更好的解决方案。

1 个答案:

答案 0 :(得分:0)

你看过这个教程吗?我不认为固定高度的导航栏有任何问题......

http://www.devinrolsen.com/pure-css-horizontal-menu/

哦darn - 垂直菜单?可能这不会有帮助。