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

HTML разметка

Структура состоит из обычного неупорядоченного списка. Нижние уровни сделаны просто добавлением в li верхнего уровня такие же списки ul:

<ul id="files">
	    <li><a href="documents">Мои документы</a>
	        <ul>
	            <li><a href="#">Мои файлы</a>
	                <ul>
	                    <li><a href="#">jQuery.doc</a></li>
	                    <li><a href="#">php.doc</a></li>
	                    <li><a href="#">mySQL.doc</a></li>
	                </ul>
	            </li>
	            <li><a href="#">Заметки</a>
	                <ul>
	                    <li><a href="#">Праздник.doc</a></li>
	                    <li><a href="#">Поздравления.doc</a></li>
	                </ul>
	            </li>
	            <li><a href="#">Путешествия</a>
	                <ul>
	                    <li><a href="#">Турция</a></li>
	                    <li><a href="#">Сочи</a></li>
	                </ul>
	            </li>
	            <li><a href="#">Портфолио</a>
	                <ul>
	                    <li><a href="#">pcvector.doc</a></li>
	                    <li><a href="#">pcvectornet.doc</a></li>
	                </ul>
	            </li>
	        </ul>
	    </li>
	    <li><a href="movies">Моё видео</a>
	        <ul>
	            <li><a href="#">Хоббит.avi</a></li>
	            <li><a href="#">Прометей.avi</a></li>
	        </ul>
	    </li>
	    <li><a href="music">Моя музыка</a>
	        <ul>
	            <li><a href="#">Julien Mokrani & Samuel Bodin – Beauty Reel.mp3</a></li>
	            <li><a href="#">Brian Tyler – Falling Into a Dream.mp3</a></li>
	        </ul>
	    </li>
	    <li><a href="photos">Мои фото</a>
	        <ul>
	            <li><a href="#">я.jpg</a></li>
	            <li><a href="#">цветок.jpg</a></li>
	            <li><a href="#">горы.jpg</a></li>
	            <li><a href="#">город.jpg</a></li>
	            <li><a href="#">небо.jpg</a></li>
	        </ul>
	    </li>
	</ul>

CSS

Для оформления меню используем такой стиль:

body {
	    font-size:62.5%;
	    margin:20px!important;
	}
	#files {
	    margin:2em 0 5em;
	    width:200px;
	}
	.tree {
	    font-size:1.5em;
	}
	.tree,.tree ul,.tree li {
	    list-style:none;
	    margin:0;
	    padding:0;
	    zoom:1;
	}
	.tree ul {
	    margin-left:8px;
	}
	.tree li a {
	    color:#555;
	    padding:.1em 7px .1em 27px;
	    display:block;
	    text-decoration:none;
	    border:1px dashed #fff;
	    background:url(../images/icon-file.gif) 5px 50% no-repeat;
	}
	.tree li a.tree-parent {
	    background:url(../images/icon-folder-open.gif) 5px 50% no-repeat;
	}
	.tree li a.tree-parent-collapsed {
	    background:url(../images/icon-folder.gif) 5px 50% no-repeat;
	}
	.tree li a:hover,.tree li a.tree-parent:hover,.tree li a:focus,.tree li a.tree-parent:focus,.tree li a.tree-item-active {
	    color:#000;
	    border:1px solid#eee;
	    background-color:#fafafa;
	    -moz-border-radius:4px;
	    -webkit-border-radius:4px;
	    border-radius:4px;
	}
	.tree li a:focus,.tree li a.tree-parent:focus,.tree li a.tree-item-active {
	    border:1px solid #e2f3fb;
	    background-color:#f2fafd;
	}
	.tree ul.tree-group-collapsed {
	    display: none;
	}

javascript

Скрипты на странице мы подгружаем с помощью js фреймворка enhance.js, которая сначала проводит тест браузера на поддержку javascript и CSS, до того, как будут загружены на страницу дополнительные скрипты и стили:

<script type="text/javascript" src="js/enhance.js"></script>        
	<script type="text/javascript">
	    // Запуск теста на поддержку браузером скриптов
	    enhance({
	        loadScripts: [
	            'https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js',
	            'js/jQuery.tree.js',
	            'js/example.js'
	        ],
	        loadStyles: ['css/enhanced.css'],
	        forcePassText: ['Посмотреть с подключенными скриптами'],
	        forceFailText: ['Посмотреть с выключенными скриптами']
	    });
	</script>

Если тест пройден, то грузим jquery, плагин tree и скрипт инициализации плагина, затем грузится стиль нашего меню и отладочный текст для локали.

Содержимое файла example.js:

$(function(){
	    $('#files').tree({
	        expanded: 'li:first'
	    });
	});

expanded: 'li:first' - указывает, что при загрузке страницы, первый элемент списка будет раскрыт и показаны его "детки".

 

Офф. страница: jQuery-Tree-Control

СКАЧАТЬСкачек: 1780
7,62 Kb
Кто скачал?

ДЕМОПосмотреть
пример