Динамическое выпадающее меню на PHP
Настало время сделать полноценное меню. Состоящее из вложеных подменю.
И важно, чтобы пользователь знал в каком именно разделе сайта он находится.
Делаем это меню в PHP. сильно услажнять не будем, сделаем буквально пару строк меню.
<div class='menu_dv'>
<ul>
<li><a href='#'>МЕНЮ1</a>
<ul>
<li><a href='#'>МЕНЮ2</a></li>
</ul>
</li>
<li><a href='#'>МЕНЮ3</a></li>
</ul>
</div>
Вот наша менюшка готова. теперь надо придумать переменные для классов.
div у нас имеет класс menu_dv пусть так и будет.
из прошлой статьи мы давали переменные классам ссылок. дадим и тут.
Еще нам требуется дать класс то строке спиок внутри которой нам надо скрывать и показывать
только при наведении или когда выделен этот пункт меню.
<div class='menu_dv'>
<ul>
<li class='$menu_li1' ><a class='$menu1' href='#'>МЕНЮ1</a>
<ul>
<li><a class='$menu2' href='#'>МЕНЮ2</a></li>
</ul>
</li>
<li><a class='$menu3' href='#'>МЕНЮ3</a></li>
</ul>
</div>
создаем функцию внутри php и запихиваем туда наше меню.
function show_menu2($stat_menu)
{
$menu_li = 'no_active_pad1'; //класс при котором список внутри строки скрыт. display:none;
// при нажатии на данный список меняем класс на active_pad где display:block;
$menu1 = 'no_active_m'; // по умолчанию все ссылки не активны.
$menu2 = 'no_active_m';
$menu3 = 'no_active_m';
switch($stat_menu)
{
case 1: $menu_li='active_pad'; $menu1='active_m'; break; //при нажатии на меню 1 делаем этот пункт меню активным
case 2: $menu_li='active_pad'; $menu2='active_m'; break; //при нажатии на меню 2 делаем этот пункт меню активным
case 3: $menu3='active_m'; break; //при нажатии на меню 3 делаем этот пункт меню активным
default: $menu_li = 'active';
}
echo
"
<div class='menu_dv'>
<ul>
<li class='$menu_li' ><a class='$menu1' href='#'>МЕНЮ1</a>
<ul>
<li><a class='$menu2' href='#'>МЕНЮ2</a></li>
</ul>
</li>
<li><a class='$menu3' href='#'>МЕНЮ3</a></li>
</ul>
</div> ";
}
Осталось забить стили в CSS там надо быть очень внимательным.
Нельзя забывать, что иерархия подкласов перебивает класс.
Т.е. класс $menu_li можно по другому обозначить как .menu_dv ul li
Так вот .menu_dv ul li реально сильнее $menu_li
Наваяем классы.