Joomla 1.5 Верстка Рецепты Пошаговое создание трёхуровневого меню
set3-24

Пошаговое создание трёхуровневого меню

Рейтинг пользователей: / 11
ХудшийЛучший 

Введение

Хотя и идея, и технология создания такого меню далеко не новы, но по результатам комментариев в статье «Создание раскрывающегося меню на базе стандартного mod_mainmenu Joomla 1.5» оказалось, что тема по-прежнему актуальна и требует достаточно простого решения. В данной статье так же формируется меню на основе стандартного модуля mod_mainmenu. Пока что, ширина пунктов меню фиксированная.

Не стоит пугаться размера статьи — на самом деле это просто! Объём объясняется графоманией автора тем, что хочется по шагам описать технику создания, дабы после определённого шага можно было приступить к доработке дизайна под себя. Но для самых нетерпеливых — пример сформированного меню вместе с CSS-файлами.

Подготовка

Сперва необходимо настроить меню следующим образом:

  • Параметры модуля:
    • Стиль меню: Список
    • Всегда показывать вложенные подпункты: Да
  • Другие параметры:
    • Раскрывать меню: Да

Приведение к общему знаменателю

Сперва потребуется сделать так, чтобы все браузеры реагировали на изменения одинаково. Предположим, что уже есть готовый сайт, куда требуется только добавить меню. В этом случае подключение CSS-файлов вроде YUI Reset CSS может вызвать ненужные изменения существующего сайта. Собственно, всё что требуется для первого шага:

  • Заставить IE6 понимать псевдоклассы :hover для всех элементов
  • Убрать стандартное оформление для списков

Приручение «осла»

К счастью, уже существует библиотека whatever:hover, которую достаточно скачать и подключить к странице, в случае если у посетителя в качестве браузера выступает IE (внимание на кавычки, без них может не работать):

body { behavior:url("csshover3.htc"); }

После этого можно приступить непосредственно к редактированию CSS-стиля.

Сброс стандартного отображения списков

Да, пока не забыл, все CSS-правила будут применимы к каждому меню, найденному на странице. Если сделать выпадающим необходимо какое-то одно, то его стоит заключить, например, в элемент «div id="dropdown"> и соответствующим образом корректировать CSS-правила.

Удаление отступов и маркеров у списков:

ul.menu,
ul.menu ul {
	list-style-type: none;
	padding: 0;
	margin: 0;
}

Создание функционального прототипа меню

На данном шаге необходимо только обеспечить своевременное появление и исчезновение пунктов меню. Ничего сложного в этом нет, к тому же этот фрагмент так же указан на сайте whatever:hover:

ul.menu ul,
li:hover ul ul { display:none; }
li:hover ul,
li:hover li:hover ul { display:block; }

Создание «скелета»

Теперь необходимо скомпоновать получившееся меню в тот вид, в каком оно обычно оформляется — горизонтальный первый уровень и выпадающие подпункты под ним.

ul.menu li {
	float: left;
	position: relative;
}

ul.menu li,
ul.menu ul,
ul.menu li li a {
	width: 180pt;
}

ul.menu ul {
	position: absolute;
	left: 0;
}

ul.menu ul {
	clear: left;
}

ul.menu li li {
	float: none;
	position: relative;
}

ul.menu li li a {
	display: block;
}

ul.menu li li ul {
	left: 180pt;
}

Визуальное оформление

Ну и наконец аскетичный набор рюшечек, чтобы придать меню более знакомый вид. Начинать серьёзно допиливать стиль под свой дизайн можно уже с этого этапа.

ul.menu {
	font-family: arial, sans-serif;
	font-size: 11px;
}

ul.menu li a span {
	padding-left: 23px;
}
ul.menu ul {
	top: 2em;
	z-index: 200;
}
ul.menu a {
	text-decoration: none;
	line-height: 2;
}

ul.menu li {
	background-image: url(../music.png);
	background-repeat: no-repeat;
	background-position: 1.1% center;
}

ul.menu li.parent {
	background-image: url(../folder-closed.png);
}
ul.menu li.parent:hover {
	background-image: url(../folder.png);
}

ul.menu li:hover {
	background-color: #eee;
}

ul.menu ul {
	border: solid 1px #ddd;
	background-color: white;
}

ul.menu li li ul {
	top: -1px;
}

Creative Commons License
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.

 
Интересная статья? Поделись ей с другими:

Комментарии  

 
0 #8 Zhenis 2011-05-30 22:36 Благодарю автора, классное меню. Теперь осталось подредактироват ь под себя. Цитировать
 
 
0 #7 Михаил 2011-01-15 11:20 Спасибо,все работает.Уже не один раз использовал. Цитировать
 
 
0 #6 Чернокир 2010-04-02 02:30 Спасибо! Буду разбираться дальше. Цитировать
 
 
0 #5 Administrator 2010-04-02 01:38 Цитирую Чернокир:
вопрос от чайника:
код вставлять в menu.css или в template.css
и вот этот - body { behavior:url("csshover3.htc"); } тоже

По идее к тому стилю, что подключен, то есть без разницы, а вот код для IE лучше вставлять в стиль, который подклбчается условно для IE (обычно что-то вроде IE.css)
Цитировать
 
 
0 #4 Чернокир 2010-04-02 01:27 вопрос от чайника:
код вставлять в menu.css или в template.css
и вот этот - body { behavior: url('/csshover3.htc'); } тоже
Цитировать
 
 
0 #3 Вася 2009-11-22 13:41 Кто-нибудь ответит по горизонтальному меню? Цитировать
 
 
+1 #2 Kaylang1 2009-07-25 10:49 Имел ввиду, чтобы подменю открывались без клика по родительскому элементу. Цитировать
 
 
-2 #1 Kaylang1 2009-07-25 08:32 А как все же сделать горизонтальное раскрывающееся меню?
Ну, скажем на базе topmenu (class="menu-nav")?
Цитировать
 

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


Защитный код
Обновить

Войти на сайт

Ваше мнение

А если бы плагин rusbuttons стал платным?