Отже, принцип такий: кожний пункт меню розміщуємо в одному блоці, а підменю - в другому. Блок з підменю приховуємо, а потім, при наведенні вказівника мишки на перший блок забезпечимо відображення другого.
➊ Створюємо головний блок, в якому розмістяться ще два блоки нашого горизонтального меню:
<div id="container">
<div id="first"></div><div id="second"></div>
</div>
Назвемо головний блок container, а вкладені блоки - first і second:
Всередині кожного з блоків first і second розмістимо ще по одному блоку. В головних блоках буде назва пункту меню, а в підпорядкованих - підпункти.
<div id="container">
<div id="first">FirstBlock
<div id="block1"></div>
</div>
<div id="second">SecondBlock
<div id="block2"></div>
</div>
</div>
Основну розмітку завершено.
❷ Переходимо тепер до детальних налаштувань створеного за допомогою таблиці стилів. Перш за все, задамо властивості головного блока container:
#container {display: flex; /*дозволяємо гнучке розміщення блоків усередині,щоб block1 і block2 були розташовані не один під одним, а погоризонталі*/justify-content: space-between; /*організовуємо вирівнюваннявкладених блоків: лівий край першого блока - по лівому краюконтейнера, правий край правого блока - по правому краю контейнера,а між блоками стільки місця, скільки дозволяє ширина браузера*/text-align: center; /*текстові написи в блоках вирівнюютьсяпо центру*/height: 80px; /*висота контейнера 80 px*/}
Уточнимо властивості блоків, що містяться у середині контейнера:
#first, #second {
background-color: purple; /*встановлення тла блоків*/
width: 49%; /*ширина блоків*/
margin: auto; /*відступ від елементів сторінки до блоку нехай
браузер встановлює сам*/
height: 80px; /*висота блоку, очевидно, повинна дорівнювати
висоті контейнера*/
line-height: 80px; /*нехитрий спосіб вертикального центрування
тексту всередині блоку - встановити міжрядковий інтервал (до і
після тексту) рівним висоті самого блоку*/
}
❸ Переходимо до розмічування підменю.
Організувати підменю, яке складається з декількох пунктів, можна різними способами. Задля прикладу зробимо список у блоку block1 за допомогою абзаців, а у блоку block2 за допомогою маркованого списку (хоча взагалі-то усі меню слід робити в одному стилі, щоб уникнути проблем з вирівнюванням тексту в блоках!).
У коді html-сторінки дописуємо таке:
<div id="block"> <div id="first">FirstBlock <div id="block1"> <p><a href="#">Item1</a></p><!--підменю абзацами--> <p><a href="#">Item2</a></p> <p><a href="#">Item3</a></p> </div> </div> <div id="second">SecondBlock <div id="block2"> <ul><!--підменю списком--> <li><a href="#">Item4</a></li> <li><a href="#">Item5</a></li> <li><a href="#">Item6</a></li> </ul> </div> </div> </div>
У block1 вирівняємо текст в абзацах по центру й зменшимо міжабзацний інтервал:
#block1 p {
text-align: center;
margin: 10px;
line-height: 20px;
}
☝Запис в таблиці стилів #block1 p означає, що зазначені нижче властивості стосуються усього, що помічено тегом <p> в межах блоку block1 і не поширюються на усі інші абзаци, розміщені на сторінці.
У block2 прибираємо маркери списку й усуваємо відступ від маркерів до тексту в списку:
#block2 ul {
list-style: none;
margin: 0;
padding: 0;
line-height: 40px;
}
...і усі гіперпосилання робимо без підкреслювання:
#container a {
text-decoration: none;
}
❹ Нарешті, найважливіше - розміщення на сторінці наших підменю:
#block1, #block2 {
display: none; /*за промовчанням підменю НЕ показувати*/
position: relative; /*позиція на сторінці - налаштовувана
(блок можна буде рухати туди-сюди за потреби)*/
height: auto; /*висота блоку залежить від його вмісту*/
padding: 10px; /*відступ блоку від інших елементів сторінки*/
background-color: blue; /*колір тла*/
}
❺ І, насамкінець, - про поведінку блоків:
#first:hover > #block1 {
display: inherit;
}
#second:hover > #block2 {
display: inherit;
}
Цей запис означає, що блоки first і second ми віднесли до псевдокласу hover, який визначає стиль елемента тоді, коли на нього буде наведено курсор миші.
Що ж відбудеться з нашими блоками після наведення курсора? А от що. Після наведення курсора на блок first відбудеться зміна в стильових налаштуваннях блоку block1, а саме: значення його атрибута display (а воно у нього за промовчанням встановлене none), зміниться на те, яке встановлене у його батьківського елемента - блоку first (а воно там не вказане, значить, за промовчанням, у нього display: block). Таким чином block1 почне відображатися і триватиме це доти, доки курсор миші наведено на блок first. Як тільки курсор буде прибрано - усі стильові налаштування блоку block1 повернуться до початкових. З блоком second аналогічно.
Приклад роботи даного меню: