Создать раскрывающееся меню
Создать меню, которое по нажатию открывается либо закрывается:
P.S. HTML/CSS исходного документа можно и нужно менять.
HTML/CSS
Для начала создадим разметку HTML/CSS нашего меню.
Меню – это отдельный графический компонент на странице, так что его лучше вынести в отдельный DOM-элемент.
Список пунктов меню может быть представлен в виде списка ul/li
.
Пример HTML-структуры:
<div class="menu">
<span class="title">Сладости (нажми меня)!</span>
<ul>
<li>Пирожное</li>
<li>Пончик</li>
<li>Мёд</li>
</ul>
</div>
Для заголовка мы используем тег <span>
, потому что <div>
, как и любой блочный элемент, имеет скрытое свойство display:block
, а значит, занимает ширину 100%.
Например:
<div style="border: solid red 1px" onclick="alert(1)">Сладости (нажми меня)!</div>
Таким образом, если мы зададим обработчик события onclick
, то он будет срабатывать по клику на всей ширине поля.
…тег <span>
– строчный элемент, по умолчанию имеет свойство display: inline
, который занимает ровно столько места, сколько занимает сам текст:
<span style="border: solid red 1px" onclick="alert(1)">Сладости (нажми меня)!</span>
Переключение меню
Переключение меню должно менять стрелку и скрывать или показывать список элементов меню.
Все эти изменения прекрасно обрабатываются средствами CSS. Посредством JavaScript мы будем отмечать текущее состояние меню, добавляя или удаляя класс .open
.
Без класса .open
меню будет закрыто:
.menu ul {
margin: 0;
list-style: none;
padding-left: 20px;
display: none;
}
.menu .title::before {
content: '▶ ';
font-size: 80%;
color: green;
}
…А с ним (с классом .open
) стрелка будет меняться, и список будет показываться:
.menu.open .title::before {
content: '▼ ';
}
.menu.open ul {
display: block;
}