Главная » Создание сайтов » Верстка » Динамическое вертикальное меню

Динамическое вертикальное меню

Динамическое вертикальное менюЭто простой урок, расскажет Вам, как с помощью минимальных знаний в области CSS и HTML а так же JavaScript, можно создать вертикальное меню, с вложенными разделами.

Итак, для создания меню нам понадобиться:

1. Изображение

right

2. CSS и JavaScript код

CSS

<style type="text/css">
/*Credits: Динамическое Вертикальное Меню */
/*URL: http://bitby.net/ */
.sidebarmenu ul{
margin: 0;
padding: 0;
list-style-type: none;
font: bold 13px Verdana;
width: 180px; /* Main Menu Item widths */
border-bottom: 1px solid #ccc;
}

.sidebarmenu ul li{
position: relative;
}

/* Top level menu links style */
.sidebarmenu ul li a{
display: block;
overflow: auto; /*force hasLayout in IE7 */
color: white;
text-decoration: none;
padding: 6px;
border-bottom: 1px solid #778;
border-right: 1px solid #778;
}

.sidebarmenu ul li a:link, .sidebarmenu ul li a:visited, .sidebarmenu ul li a:active{
background-color: #012D58; /*background of tabs (default state)*/
}

.sidebarmenu ul li a:visited{
color: white;
}

.sidebarmenu ul li a:hover{
background-color: black;
}

/*Sub level menu items */
.sidebarmenu ul li ul{
position: absolute;
width: 170px; /*Sub Menu Items width */
top: 0;
visibility: hidden;
}
.sidebarmenu a.subfolderstyle{
background: url(right.gif) no-repeat 97% 50%;
}
/* Holly Hack for IE */
* html .sidebarmenu ul li { float: left; height: 1%; }
* html .sidebarmenu ul li a { height: 1%; }
/* End */
</style>

JavaScript

<script type="text/javascript">
//By : http://bitby.net/
var menuids=["sidebarmenu1"] //Enter id(s) of each Side Bar Menu's main UL, separated by commas
function initsidebarmenu(){
for (var i=0; i<menuids.length; i++){
var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
for (var t=0; t<ultags.length; t++){
ultags[t].parentNode.getElementsByTagName("a")[0].className+=" subfolderstyle"
if (ultags[t].parentNode.parentNode.id==menuids[i]) //if this is a first level submenu
ultags[t].style.left=ultags[t].parentNode.offsetWidth+"px" //dynamically position first level submenus to be width of main menu item
else //else if this is a sub level submenu (ul)
ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
ultags[t].parentNode.onmouseover=function(){
this.getElementsByTagName("ul")[0].style.display="block"
}
ultags[t].parentNode.onmouseout=function(){
this.getElementsByTagName("ul")[0].style.display="none"
}
}
for (var t=ultags.length-1; t>-1; t--){ //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
ultags[t].style.visibility="visible"
ultags[t].style.display="none"
}
}
}
if (window.addEventListener)
window.addEventListener("load", initsidebarmenu, false)
else if (window.attachEvent)
window.attachEvent("onload", initsidebarmenu)
</script>

Теперь html кодом выводим меню

<div class="sidebarmenu">
<ul id="sidebarmenu1">
<li><a href="http://bitby.net/">Пункт 1</a></li>
<li><a href="#">Пункт 2</a></li>
<li><a href="#">Папка 1</a>
<ul>
<li><a href="#">Подпункт 1.1</a></li>
<li><a href="http://bitby.net/">Подпункт 1.2</a></li>
</ul>
</li>
<li><a href="#">Пункт 3</a></li>

<li><a href="#">Папка 2</a>
<ul>
<li><a href="#">Подпункт 2.1</a></li>
<li><a href="#">Папка 2.1</a>
<ul>
<li><a href="#">Подпункт 2.1.1</a></li>
<li><a href="#">Подпункт 2.1.2</a></li>
<li><a href="#">Подпункт 2.1.3</a></li>
<li><a href="#">Подпункт 2.1.4</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Пункт 4</a></li>
</ul>
</div>

Демо

Вертикальное Меню

P.S.

Затем, можно все взять в какой-нибудь красивый блок с закругленными краями, но это уже будет как говориться совсем другая история ;-) С уважением, Vasilenko Ivan!

Комментарии — 7 комментариев

  1. #1008 WebMast в 11:40, 10 мая 2009:

    Ответить | Цитировать

    Не поддерживаю такую технику. Намного проще сделать через CSS без скриптов ; ).

  2. #1010 egoholic в 15:32, 10 мая 2009:

    Ответить | Цитировать

    Не поддерживаю такую технику. Намного проще сделать через CSS без скриптов ; )

    -вот вот!

    Мне больше нравится вариант без использования JS

  3. #1076 Pit в 11:17, 22 мая 2009:

    Ответить | Цитировать

    Довольно просто все делается. Только нужно немного времени,чтобы разобраться во всем. Зато меню теперь выглядит просто оригинально.

  4. #2334 kon в 9:13, 6 июля 2009:

    Ответить | Цитировать

    а можите выложить буз ява скрипта

  5. #7076 Станислав в 21:46, 14 октября 2009: (подписался)

    Ответить | Цитировать

    а как точнее за место чего, вставить красивый блок с закругленными краями(подразумевается картинка) ...подскажите начинающему

  6. #7135 WebMast в 20:00, 15 октября 2009:

    Ответить | Цитировать

    Станислав, напиши мне в аську, я тебе все расскажу...

  7. #9590 Da39 в 8:09, 7 апреля 2010:

    Ответить | Цитировать

    В принципе все хорошо, за исключением одного: Mozilla Java Script выполняет с ошибкой. Вследствие чего меню не отображается полностью...

Добавить комментарий

имя:

e-mail:

сайт:

текст:

Подписаться, не комментируя