Как и в предыдущем примере, здесь так же показаны два варианта, с той лишь разницей, что для разметки используются элементы div и заголовки. Такой вариант реализации аккордеона может быть удобен, например, для оформления страницы "Вопрос-Ответ".
html разметка
<div id="faq_first" class="nav_wrap"> <h3>Как сделать всплывающую подсказку на css?</h3> <div class="sub_nav"> <p>Способов реализации всплывающих подсказок (tooltip) придумано очень много. Об одном, очень простом методе, реализованном с использованием только css, вы можете прочесть в статье <strong>"Всплывающая подсказка на css"</strong>.</p> </div> <h3>Какие первичные настройки требуется сделать после установки Joomla?</h3> <div class="sub_nav"> <p>- "включить" файл .htaccess;</p> <p>- настроить ЧПУ и mod_rewrite;</p> <p>- убрать id из урла joomla (если речь идет о версиях 2.5 или 3)</p> <p>Более подробно о настроках можно узнать в статьях <strong>"Первичные настройки Joomla 1.5.x/2.5.x/3.0.x"</strong> и <strong>"Убираем id из урла joomla 2.5.x/3.0.x"</strong></p> </div> <h3>Какие файлы отвечают за вывод пагинации в Virtuemart 1.х?</h3> <div class="sub_nav"> <p>Для изменения стилевого оформления можно использовать файл со стилями применяемого шаблона. Если требуется изменить разметку, то править следует файл <strong>/components/com_virtuemart/themes/default/templates/browse/includes/browse_pagenav.tpl.php</strong>.</p> </div> <h3>Как установить MODx Revolution на удаленный сервер?</h3> <div class="sub_nav"> <p>Подробные инструкции по этому вопросу даны в статье <strong>"Установка MODx Evolution"</strong>. Так же следует обратить внимание на настройки сервера. О том, какие настройки необходимы для этой CMS, можно узнать из раздела <strong>"Работа с сервером"</strong>.</p> </div> </div>
Вариант стилевого оформления:
.nav_wrap { margin:20px auto; width:600px; } .nav_wrap h3 { margin-bottom:10px; padding-left:20px; line-height:24px; font-size:16px; color:#000; text-decoration:none; border-bottom:1px solid #d4d9df; cursor:pointer; position:relative; } .nav_wrap h3 span { width:0; height:0; position:absolute; top:10px; left:6px; border-top:3px solid transparent; border-bottom:3px solid transparent; border-left:6px solid #000; } .nav_wrap h3.active span { border-top:6px solid #000; border-left:3px solid transparent; border-right:3px solid transparent; } .sub_nav { padding:0 10px 20px 20px; width:580px; display:none; } .sub_nav p { font-size:12px; color:#333; }
jQuery код:
$(function () { var el = $('#faq_first h3'), subEl = $('#faq_first div.sub_nav'); el.append('<span></span>'); el.click(function() { var checkElement = $(this).next(subEl); checkElement.stop().animate({'height':'toggle'}, 300); $(this).toggleClass('active'); }); });
html и css код остается без изменений. Нужно только поменять id у родительского контейнера, если предполагается разместить оба варианта на одной странице.
jQuery код для второго варианта (в примере оба меню размещены в одном документе):
$(function () { var el = $('#faq_last h3'), subEl = $('#faq_last div.sub_nav'), prevElement = el.next(subEl).prev(); prevElement.append('<span></span>'); el.click(function() { var checkedElement = $(this).next(subEl); visibleElement = subEl.filter(':visible'); visibleElement.stop().animate({'height':'toggle'}, 300).prev().toggleClass('active'); if((checkedElement.is(subEl)) && (!checkedElement.is(':visible'))) { checkedElement.stop().animate({'height':'toggle'}, 300).prev().toggleClass('active'); } return false; }); });
Оба варианта независимо друг от друга выполняют требуемые от них функции, даже, если их разместить на одной странице.
Меню протестированы в IE 7-8-9, Chrome, Safari, Opera, FF и везде демонстрируют одинаковый результат.
С подробным анализом кода в примерах можно ознакомиться в статьях "Аккордеон без списков" и "Улучшаем аккордеон без списков ".