css, html, php, javascript, jQuery, ajax … – решения, примеры, рецепты
25 Янв
Вы знаете, что такое аккордеон? Правильно – музыкальный инструмент. А еще аккордеоном называют раскрывающуюся / закрывающуюся панель содержащую какой-либо контент. Его удобно применять, когда содержимое должно быть показано в ограниченном пространстве. Например, есть довольно большое меню, разделенное на разделы, а места, чтобы его отобразить сразу – просто хватает. Вот тогда и придет на помощь accordion. Внимание! Эта статья устарела! Новую статью можно почитать здесь.
Посмотрите эти два примера. Пример слева срабатывает по щелчку мышью на панельке-заголовке и имеет довольно интересный эффект «прыгающего мячика», когда панелька падает вниз. Пример справа срабатывает при наведении указателя мыши на панель-заголовок. Тут применен эффект по умолчанию – простое скольжение.
Жалко только, что как всегда в браузере названИЕкоторого Вы знаете без меня, все это выглядит не так прилично как в остальных. Ну, если немного помучаться с CSS, наверняка можно привести все к единообразию).
Вы можете сохранить исходный код примера и при наличии у Вас библиотеки jQuery, воспроизвести его на своем сайте.
Как всегда, нам потребуется подключить саму библиотеку и еще пару-тройку небольших файлов в раздел HEAD.
<script src="js/jquery-1.2.1.js" type="text/javascript"></script> <script src="js/jquery.dimensions.js" type="text/javascript"></script> <script src="js/ui.accordion.js" type="text/javascript"></script> <script src="js/jquery.easing.js" type="text/javascript"></script>
Сначала подключаем саму библиотеку, затем файл jquery.dimensions.js (он нам уже знаком – отвечает за работу с размерами элементов). Интересный нам файл ui.accordion.js – именно он обеспечивает работу аккордеона. Файл jquery.easing.js понадобится только в том случае, если Вы решите использовать анимацию, отличную от той, что установлена по умолчанию.
HTML и CSS-код приводить не имеет смысла, поскольку он настолько прост, что пояснений не требует. Посмотреть его Вы всегда сможете в исходном коде примера. Не забывайте только, что тот маленький скрипт, код которого я приведу ниже, обращается к элементам по их идентификаторам.
Итак код:
<script type="text/javascript">
$(document).ready(function(){
$("#example").accordion({
animated: "bounceslide"
});
$("#example2").accordion({
event: "mouseover"
});
});
</script>
И это все! Мы написали оба аккордеона!
Как всегда весь код обернут в $(document).ready(function(){ … }); Для первого аккордеона выбран элемент с id #example, для второго соответственно #example2. В опции animated первого аккордеона мы (пользуясь тем, что подключили файл jquery.easing.js) задали интересный эффект, а в опции event второго аккордеона указали на то, что срабатывать он должен по событию mouseover.
Собственно мы могли поступить еще проще и написать вот так:
$("#example").accordion();
и такой код прекрасно работал бы, потому, что в файле ui.accordion.js задаются опции по умолчанию.
По умолчанию там заданы опции animated: slide и event: click, а также очень интересная опция autoheight: true. В примере, появляющиеся окошки для отображения контента всегда одинаковы и высота определяется по блоку с максимальным содержимым. Если же опцию autoheight установить в false, высота будет разная.
Полный список опций можно отыскать на сайте разработчика. Удачи и юзайте jQuery!
Отзывов (26) на «Пользовательские интерфейсы jQuery: создаем аккордеон»
Скрипт отлично работает как в ИЕ так и в Опере!!!
В ИЕ 6 меню постоянно дерагется – хз почему
CSS. Очень точно должны быть рассчитаны расстояния по вертикали…
что вы имеете ввиду? Скрипт ведь сам все считает. Или я что-то недопонял?
Посмотрите внимательно стилевое оформление в файле примера. Особенно все, что касается размера элементов по высоте…
http://referee.ru – что не так
2 Gennady
Посмотрел пример(http://www.linkexchanger.su/example_jquery/accordion.html), но про высоту там и близко ничего нет……
В IE придется довольно дотошно манипулировать такими CSS-свойствами как border и margin, применительно конечно к bottom (и/или top)… С их помощью можно подобрать такую высоту контейнера, что «дерганий» не будет… Т.е. тут еще и от содержимого самого аккордеона будет зависеть.
Рендеринг в ИЕ – жопа просто. Проблему решил заданием фона не для ссылок в меню A – а для элементов списка LI. Дергания ушли, но в FF остался баг – при разворачивании аккордеона, он редет половину содержимого http://referee.ru
2 mihdan:
Чтобы работало без косяков, типа обрубания половины содержимого, используй не ui.accordion.js, а jquery.accordion.js.
Та же лажа
Потому как аккардион этой версии лажа полная и не годится для нормальных проектов, надо искать альтернативы, а они есть.
Статья была написана еще в январе и ес-но произошло много изменений, как в самой библиотеке, так и в плагинах к ней, в т.ч. и в этом. Статья знакомит в общем-то только с принципами (прочитайте с пяток статей по плагинам – увидите общее…), а свежие версии лучше брать не с моего сайта, а с сайта jQuery. В конкретном случае – Accordion тут.
Ну естественно не с вашего сайта, я всегда брал с офсайтов плагтнов, но в моем случае исправить косяки не удалось
Здравствуйте
Все оч. здорово! Но есть проблема. Как во внутрь аккордиона (в текст к примеру «Выпивают двое мужиков») вставить ссылку и чтоб при этом она не вызывали закрытие аккордиона.
Может кто знает, подскажите пожалуйста, очень надо.
В параметрах смотрите…
Если можно, пожалуйста, подскажите, что именно вставлять script type=»text/javascrpt»
СЮДА script
чтоб ссылки на аккордеон не влияли
интересно почему автор в своих примерах не использует параметр autoHeight: false? Может потому что сним трабл в IE7
Автор не использовал…. Во-первых, потому что цель была – только познакомить, а не детально все разжевать. Во-вторых, посмотрите на дату статьи – в то время в этом плагине трабл было куда как больше.
Спасибо большое, давно искал реализацию такого визуального эффекта!
Но мне непонятно, почему этот эффект не действует с более новой библиотекой jQuery – версии 1.3.1?
Также не ясна связь библиотек jquery и ui.accordion, например…
Все просто очень. Эта статья довольно старая. Библиотека сильно изменилась, изменились и плагины к ней. Чтобы использовать аккордеон с 1.3.1 надо иметь и соответствующую версию плагина.
Скачать можно на сайте UI jQuery, на странице настраиваемой закачки. Можно отметить галочкой только то, что нужно – и вперед. Обязательно понадобится UI Core. Обратите внимание, что если работаете с jQuery 1.3.1, тогда и версию UI нужно выбрать 1.6rc6.
Что касается связей… Библиотека (хотите, называйте framework) одна – это jQuery. В ней сосредоточена базовая, наиболее часто используемая функциональность. Остальное – это плагины, расширяющие эту базовую функциональность дополнительными возможностями. Можно пояснить еще проще – когда Вы что-то прячете/показываете на своей странице – используете методы show()/hide(). Точно также написав
$('#selector').accordion();Вы вызываете метод accordion(), который стал доступен после подключения соответствующего расширения (плагина).
Здравствуйте. Подскажите пожалуйста есть ли возможность сделать так, чтобы при повторном нажатии на пункт меню, оно сворачивалось?
Можно. Нужно в настройках передать опцию collapsible: true
да, но почему-то он сворачивается тогда, когда кликаешь на содержимое а не на заголовок
У Вас версии свежие?
Посмотрите, вот тут демо
http://jqueryui.com/demos/accordion/#collapsible
Не так может быть еще и HTML-разметка. Accordion такие требования предъявляет.
Оставьте отзыв