Можно ли создать чистое подменю CSS из меню с фиксированной высотой?

У меня есть вертикальное меню с некоторыми элементами, у которых есть подменю, которое появляется справа от этого элемента. В основном это работает нормально, но в главном меню может быть много элементов, поэтому я хочу, чтобы на нем была максимальная высота с вертикальной полосой прокрутки.

Проблема в том, что если я устанавливаю overflow: auto в главном меню, то подменю больше не отображается правильно, потому что оно не может переполнять ширину основного меню.

Вот мой код с примером на http://jsfiddle.net/FK8p6/. Если вы удалите overflow: auto из класса .menu, вы увидите, что подменю работает правильно, но, конечно, главное меню больше не отображается правильно.

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;
}

Я знаю, что могу вытащить подменю за пределы главного меню в иерархии, а затем использовать javascript для его позиционирования. Но тогда я теряю чистое CSS-меню, и оно также перестает быть семантическим. Я могу жить с этим, если придется, но я хотел бы найти лучшее решение, если это возможно.


person Elezar    schedule 21.03.2013    source источник
comment
Зачем ограничивать высоту? Я не думаю, что вы можете достичь того, чего хотите, без js.   -  person gSaenz    schedule 22.03.2013
comment
@Elezar Если у вас есть меню, которое на самом деле будет такого размера, не могли бы вы рассмотреть другой метод, такой как <select> меню, которые используют многие адаптивные дизайны? С точки зрения UX это почти преступление.   -  person BlakeGru    schedule 22.03.2013
comment
@gSaenz Либо установите высоту, либо рискните, что меню будет выше окна просмотра. Так как внешний фрейм нашего приложения всегда имеет тот же размер, что и окно просмотра, мы хотим убедиться, что ничто не превышает его. @BG_Insight Можете ли вы привести пример меню <select>? Я не уверен, что вы имеете в виду.   -  person Elezar    schedule 22.03.2013


Ответы (1)


Вы видели этот урок? Я не думаю, что есть какие-то проблемы с панелью навигации фиксированной высоты...

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

О черт, вертикальное меню? Возможно, тогда это не поможет.

person Kate    schedule 09.04.2013