Трехуровневое выпадающее меню на CSS

Материал из Umicms
Перейти к:навигация, поиск

1.Создаем файл menu.css со стилями, подключаем его в теге head. Следим за тем, чтобы прописываемые правила не конфликтовали с уже имеющимися на сайте.

ul#cssmenu {
        margin: 0;
        border: 0 none;
        padding: 0;
        list-style: none;
        background: #003366;
        height: 30px;
        font: bold 12px/28px Verdana, Arial;
        border-left:#003366 1px solid;
}

ul#cssmenu li {
        margin: 0;
        border: 0 none;
        padding: 0;
        float: left;
        display: inline;
        list-style: none;
        position: relative;
        height: 30px;
}

ul#cssmenu ul {
        margin: 0;
        border: 0 none;
        padding: 0;
        width: 160px;
        list-style: none;
        display: none;
        position: absolute;
        top: 30px;
        left: 0;
}

ul#cssmenu ul:after {
        clear: both;
        display: block;
        font: 1px/0px serif;
        content: ".";
        height: 0;
        visibility: hidden;
}

ul#cssmenu ul li {
        width: 170px;
        float: left;
        display: block !important;
        display: inline;
}

/* Main Menu */
ul#cssmenu a {
        border: 0px;
        padding: 0 10px;
        float: none !important;
        float: left;
        display: block;
        background: #003366;
        color: #FFFFFF;
        font: bold 12px/28px Verdana, Arial;
        text-decoration: none;
        height: auto !important;
        height: 1%;
}

/* Main Menu Hover */
ul#cssmenu a:hover,
ul#cssmenu li:hover a,
ul#cssmenu li.iehover a {
        background: #FFFFFF;
        color:#003366;
        border-top:#003366 1px solid;
}

/* Second Menu */
ul#cssmenu li:hover li a,
ul#cssmenu li.iehover li a {
        border-top: 2px solid #FFFFFF;
        float: none;
        background: #003366;
        color: #FFFFFF;
}

/* Second Menu Hover */
ul#cssmenu li:hover li a:hover,
ul#cssmenu li:hover li:hover a,
ul#cssmenu li.iehover li a:hover,
ul#cssmenu li.iehover li.iehover a {
        border-top: 2px solid #FFFFFF;
        background: #FFFFFF;
        color:#003366;
        border:#003366 1px solid;
}

ul#cssmenu ul ul {
        display: none;
        position: absolute;
        top: 0;
        left: 170px;
}

ul#cssmenu li:hover ul ul,
ul#cssmenu li.iehover ul ul {
        display: none;
}

ul#cssmenu li:hover ul,
ul#cssmenu ul li:hover ul,
ul#cssmenu li.iehover ul,
ul#cssmenu ul li.iehover ul {
        display: block;
}

2.Создаем шаблон tpls/content/menu/drop.tpl со следующим содержанием:

<?php

$FORMS = Array();

$FORMS['menu_block_level1'] = <<<END

 <ul id="cssmenu">
    %lines%
   </ul>

END;

$FORMS['menu_line_level1'] = <<<END
 <li><a href="%link%">%text%</a>
 %sub_menu%
 </li>
END;

$FORMS['menu_line_level1_a'] = <<<END
 <li><a href="%link%">%text%</a>
 %sub_menu%
 </li>
END;


$FORMS['menu_block_level2'] = <<<END
 <ul>
  %lines%
 </ul>
END;

$FORMS['menu_line_level2'] = <<<END
 <li><a href="%link%">%text%</a>
 %sub_menu%
 </li>
END;

$FORMS['menu_line_level2_a'] = <<<END
 <li><a href="%link%">%text%</a>
 %sub_menu%
 </li>
END;

$FORMS['menu_block_level3'] = <<<END
  <ul>
   %lines%
  </ul>
END;

$FORMS['menu_line_level3'] = <<<END
 <li><a href="%link%">%text%</a></li>
END;

$FORMS['menu_line_level3_a'] = <<<END
 <li><a href="%link%">%text%</a></li>
END;

?>

3.Прописываем в шаблоне страницы макрос вывода меню

%content menu('drop', 3)%

Важно, чтобы вторым параметром было указано число не меньше 3-х, иначе выпадание работать не будет. Также, следим за тем, чтобы у страниц, выводящихся в меню, были проставлены опции "показывать подменю" и "меню всегда развернуто".