Приветствую Вас, дорогие Друзья!
В сегодняшней статье , как я и обещал ранее, пойдёт речь о самом наипростейшем вертикальном меню аккордеонного типа, выполненного средствами CSS и JavaScript. Рассматриваемый пример носит скорее учебный характер и вряд ли может найти серьёзное практическое применение. Тем не менее, в некоторых случаях, данное меню вполне может быть использовано в небольших проектах, в которых по тем или иным причинам не применяются различные плагины и фреймворки. В связи с этим код предельно упрощён, в частности, нет эффектов анимации, а вызов скрипта производится по стандартному событию с атрибутом onmouseover, включенным непосредственно в html-код страницы.
Итак, вот непосредственно сам код:
ПУНКТ №1
ПУНКТ №2
ПУНКТ №3
ПУНКТ №4
Видим, что меню это обычный список, в который входят пункты меню (теги h3) и соответствующие эти пунктам списки подпунктов (ссылок). Для раскрытия и сворачивания соответствующего пункта при наведении мышки используется свойство display. Скрипт, выполняющий данную операцию, достаточно короткий и представляет собой функцию, в которую передаётся номер текущего выбранного пункта (id). В теле функции в цикле происходит сброс свойства display всех пунктов и установка (а значит и раскрытие) текущего пункта. При этом необходимо следить за соответствием количества пунктов меню и максимальным значением переменной i в цикле.
Таблица стилей может выглядеть следующим образом:
.ac_menu{
padding:0px;
margin:5px;
cursor:pointer;
color: #567;
list-style:none;
width:250px;
border:1px solid #bbb;
}
.ac_menu > h3{
background: -moz-linear-gradient(top, #ffffff 1%, #eaeaea 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(1%,#ffffff), color-stop(100%,#eaeaea));
background: -webkit-linear-gradient(top, #ffffff 1%,#eaeaea 100%);
background: -o-linear-gradient(top, #ffffff 1%,#eaeaea 100%);
background: -ms-linear-gradient(top, #ffffff 1%,#eaeaea 100%);
background: linear-gradient(top, #ffffff 1%,#eaeaea 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eaeaea',GradientType=0 );
font-size: 14px;
margin:0;
padding:5px;
}
.ac_menu > h3:hover{
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5) inset;
-moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5) inset;
-webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5) inset;
}
.ac_menu > ul{
background:#fdfdfd;
padding:0px;
margin:0px;
list-style:none;
height:300px;
}
.ac_menu > ul > li >a{
color:#555;
text-decoration: none;
font-size: 14px;
line-height: 20px;
padding-left:20px;
display: block;
}
.ac_menu > ul > li >a:hover{
color:#55d;
background: #f6f6f6;
}
В итоге получается достаточно простой аккордеон. В последующих статьях я попытаюсь рассказать о более сложном аккордеонном меню, также выполненном на JavaScript, но уже обладающего большей универсальностью и с применением эффекта анимации.
До встречи! И спасибо, что читаете мои статьи!