Горизонтальное меню с вертикальными подпунктами
Вложений: 1
Доброго времени суток. Уважаемые знатоки, подскажите, пожалуйста, такое:
мне нужно сделать горизонтальное выпадающее меню с 3 уровнями из обычного ul li списка, вида пункт1 ______ пункт2 ______ пункт3 ______ пункт4 _подпункт1 _подпункт2 __подпункт2.1 __подпункт2.2 _подпункт3 _подпунктN Подменю должны выпадать при наведении курсора. Так и происходит при наведении на пункт в гориз. ряде, но при наведении на подкатегорию ее дочерние элементы залазят за следующий элемент. Как сделать чтобы при наведении курсора на подпункт, появлялись дочерние пункты и то что под ними сдвигалось дальше вниз? Вот мой код сейчас: <script type="text/javascript"> $(document).ready(function(){ $("ul.sf-menu li>ul").hide(); $("a span").mouseover(function(){ $(this).parent().next().toggle(200); return false; }); $("ul.sf-menu li ul").mouseleave(function(){ $("ul.sf-menu li ul").hide(); return false; }); }); </script> вот список : <ul> <li><a></a> <ul><li><a></a> <ul> <li><a></a></li> <li><a></a></li> <li><a></a></li> </ul> </li> </ul> </li> <li><a></a> <ul><li><a></a> <ul> <li><a></a></li> <li><a></a></li> <li><a></a></li> </ul> </li> </ul> </li> </ul> Подробнее на рисунке: Вложение 987 Будьте добры, помогите.:cray: |
<style> ol li { float: left; width: 100px; } ul li { float: none; width: auto; } li ul { display: none; margin-left: 0px; padding-left: 5px; } li:hover ul { display: block; } </style> <ol> <li>bla-bla <ul> <li> bla-bla, </li> <li> bla-bla-bla, </li> <li> mr. Freeman </li> </ul> </li> <li>bla-bla <ul> <li> bla-bla, </li> <li> bla-bla-bla, </li> <li> mr. Freeman </li> </ul> </li> <li>bla-bla <ul> <li> bla-bla, </li> <li> bla-bla-bla, </li> <li> mr. Freeman </li> </ul> </li> </ol> Раскраску сами добавите. Шестой осёл не поймёт, правда, но там дело поправляется маленьким скриптом. |
Небольшой фикс, который заставит работать так как того хочет тк.
<style> ol li { float: left; width: 100px; } ul li { float: none; width: auto; } li ul { display: none; margin-left: 0px; padding-left: 5px; } li:hover>ul { display: block; } </style> <ol> <li>bla-bla <ul> <li> bla-bla, </li> <li> bla-bla-bla, </li> <li> mr. Freeman </li> </ul> </li> <li>bla-bla <ul> <li> bla-bla, </li> <li> bla-bla-bla, </li> <li>bla-bla <ul> <li> bla-bla, </li> <li> bla-bla-bla, </li> <li> mr. Freeman </li> </ul> </li> <li> mr. Freeman </li> </ul> </li> </ol> Только небольшим скриптом для ie теперь не отделаешься.) |
Да, не дочитал до конца.
|
:dance: Всем большое спасибо за ответы, все работает!
Подскажите, если не трудно, что именно под ИЕ писать, а то с хаками у меня не очень? |
Вам нужно написать маленький код, который будет пробегать по всем "li" в списке и ставить им обработчик на mouseover/mouseout. Например, можно модифицировать стиль таким образом:
li:hover>ul, li._over ul{ display: block; } и при наведении мыши на li ставить ему этот класс. Единственное, что плохо - так это то, что ie6 есть ещё и дочерние селекторы не поддерживает. Поэтому вам придётся ещё помучаться. Мой вариант заключается в том, что надо подумать, сколько уровней будет в списке, а потом модифицировать стиль ещё раз: li:hover>ul, li._over_l1 ul.l1, li._over_l2 ul.l2, li._over_l3. ul.l3{ display: block; } А дальше, в зависимости от уровня вложенности li, ставить ему класс с соответствующим номером. |
trikadin, большое Вам спасибо, немного поморочился, но уже все работает.
|
Часовой пояс GMT +3, время: 09:15. |