Скролл активного пункта меню в верх страницы
Вложений: 2
В javascript я совсем не силен, может поможет кто)))
Имеем меню с подменю: <body> <ul class="accordion"> <li> <div class="link"><div class="text">Пункт 1</div></div> <ul class="submenu"> <li><a href="#">Подпункт 1</a></li> <li><a href="#">Подпункт 2</a></li> <li><a href="#">Подпункт 3</a></li> <li><a href="#">Подпункт 4</a></li> <li><a href="#">Подпункт 5</a></li> </ul> </li> <li> <div class="link"><div class="text">Пункт 2</div></div> <ul class="submenu"> <li><a href="#">Подпункт 1</a></li> <li><a href="#">Подпункт 2</a></li> <li><a href="#">Подпункт 3</a></li> <li><a href="#">Подпункт 4</a></li> </ul> </li> ......... и так далее............. <li> <div class="link"><div class="text">Пункт N</div></div> <ul class="submenu"> <li><a href="#">Подпункт 1</a></li> <li><a href="#">Подпункт 2</a></li> <li><a href="#">Подпункт 3</a></li> <li><a href="#">Подпункт 4</a></li> </ul> </li> </ul> </body> как сделать так, чтобы активный пункт меню, развернутый, не раскрывался на месте, а скроллился на высоту включенный в себя подпунктов, но не выходил за пределы видимой области... наглядно на аттачах - аттач 2 - как хотелось бы, зеленым - зона видимости |
Goopy,
добавить активному пункту scrollintoview |
Спасибо рони за наводку)
делал так: <li onclick="totop();"> <div class="link"><div class="text">Пункт 1</div></div> <ul class="submenu"> <li><a href="#">Подпункт 1</a></li> <li><a href="#">Подпункт 2</a></li> <li><a href="#">Подпункт 3</a></li> <li><a href="#">Подпункт 4</a></li> <li><a href="#">Подпункт 5</a></li> </ul> </li> то же самое и применял к <div class="link">... также на меню висит еще один скрипт для меню $(function() { var Accordion = function(el, multiple) { this.el = el || {}; this.multiple = multiple || false; var links = this.el.find('.link'); links.on('click', {el: this.el, multiple: this.multiple}, this.dropdown) } Accordion.prototype.dropdown = function(e) { var $el = e.data.el; $this = $(this), $next = $this.next(); $next.slideToggle(); $this.parent().toggleClass('open'); if (!e.data.multiple) { $el.find('.submenu').not($next).slideUp().parent().removeClass('open'); }; } var accordion = new Accordion($('#accordion'), false); }); скрипт скачан из сети... под ним я добавил следующее: $(function totop(){ var elem = document.getElementsByClassName('open'); elem.scrollIntoView(); }); не сработало, также попытался так: $(function totop(){ var div = document.getElementsById("accordion"); elem = document.getElementsByClassName('open',div); elem.scrollIntoView(); }); скрипт аккордеона назначает активному элементу li класс open, следовательно, нужно искать его и его же двигать вверх с помощью scrollIntoView... или я ошибаюсь? в общем, мой результат = 0, где у меня косяк? =( |
Цитата:
а это совсем бред Цитата:
|
Goopy,
var elem = document.getElementsByClassName('open')[0]; elem && elem.scrollIntoView(); |
Меню со скролом к выбранной категории
Goopy,
<!DOCTYPE HTML> <html> <head> <title></title> <meta charset="utf-8" /> <style type="text/css"> li ul { display: none; } body{ height: 1000px; position: relative; } </style> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $(function() { $("li").click(function(b) { b.stopPropagation(); var a = $(this); a.parent().find("li ul:visible").slideUp(600); a.children("ul").is(":hidden") && a.children("ul").slideDown(600, function() { $("body, html").stop(!0, !0).animate({ scrollTop: a.offset().top }, 800) }) }) }); </script> </head> <body> <ul class='left_nav_menu' id='nav_menu_content'> <li><a href='#0'>Категория_1</a> <ul> <li><a href="#">Подкатегория_1</a> <ul> <li><a href="#">Подподкатегория_1</a></li> </ul> </li> <li><a href="#">Подкатегория_2</a> <ul> <li><a href="#">Подподкатегория_2</a></li> <li><a href="#">Подподкатегория_3</a></li> </ul> </li> <li><a href="#">Подкатегория_3</a> <ul> <li><a href="#">Подподкатегория_4</a></li> <li><a href="#">Подподкатегория_5</a></li> </ul> </li> </ul> </li> <li><a href='#0'>Категория_2</a> <ul> <li><a href="#">Подкатегория_4</a> <ul class="material_cat"> <li><a href="#">Подподкатегория_6</a></li> </ul> </li> </ul> </li> </ul> <ul> <li>Подарки <ul> <li>Сувенирные изделия <ul > <li>Музыкальные</li> <li>Шкатулки</li> <li>Из дерева</li> <li>Металлические</li> </ul> </li> <li>Цветы <ul> <li>Розы <ul > <li>Чайная</li> <li>Махровая</li> <li>Чёрная</li> </ul> </li> <li>Подарочные цветы <ul > <li>Гвоздика</li> <li>Лилия</li> <li>Орхидея</li> </ul> </li> </ul> </li> </ul> </li> </ul> </body> </html> |
Цитата:
а вот дальше - не додумался бы))) спасибо за решение, буду разбираться) |
Часовой пояс GMT +3, время: 01:17. |