Как реализовать добавление подменю в меню при наведении курсора мыши?

Изображение к вопросу
Изображение к вопросу
  • 31 августа 2023 г. 10:17
Ответы на вопрос 1
Чтобы добавить подменю в меню при наведении курсора мыши, можно использовать CSS псевдокласс `:hover`. Вот пример:

HTML:
```html
<nav>
  <ul>
    <li><a href="#">Главная</a></li>
    <li><a href="#">Услуги</a>
      <ul>
        <li><a href="#">Веб-разработка</a></li>
        <li><a href="#">Дизайн</a></li>
        <li><a href="#">Маркетинг</a></li>
      </ul>
    </li>
    <li><a href="#">Контакты</a></li>
  </ul>
</nav>
```

CSS:
```css
nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

nav li {
  display: inline-block;
  position: relative;
}

nav a {
  display: block;
  padding: 10px;
  background-color: #f1f1f1;
  text-decoration: none;
}

nav ul ul {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
}

nav li:hover > ul {
  display: inherit;
}

nav ul ul li {
  width: 200px;
  float: none;
  display: list-item;
  position: relative;
}

nav ul ul ul li {
  position: relative;
  top: -60px;
  left: 200px;
}

nav li:hover a {
  background-color: #ddd;
}

nav li:hover ul a {
  background-color: #f1f1f1;
}

nav li:hover ul a:hover {
  background-color: #ccc;
}

nav a:hover {
  background-color: #ddd;
}
```

Чтобы исправить проблему с закрывающимся меню при нажатии на него в мобильной версии, можно использовать JavaScript. Вот пример:

HTML:
```html
<nav>
  <div class="menu-toggle"><span></span></div>
  <ul>
    <li><a href="#">Главная</a></li>
    <li><a href="#">Услуги</a>
      <ul>
        <li><a href="#">Веб-разработка</a></li>
        <li><a href="#">Дизайн</a></li>
        <li><a href="#">Маркетинг</a></li>
      </ul>
    </li>
    <li><a href="#">Контакты</a></li>
  </ul>
</nav>
```

CSS:
```css
nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: none;
}

nav li {
  display: block;
}

nav a {
  display: block;
  padding: 10px;
  background-color: #f1f1f1;
  text-decoration: none;
}

nav ul ul {
  display: none;
}

nav li:hover > ul {
  display: block;
}

nav ul ul li {
  width: 100%;
}

nav a:hover {
  background-color: #ddd;
}

.menu-toggle {
  display: none;
  cursor: pointer;
}

.menu-toggle span {
  display: block;
  width: 30px;
  height: 3px;
  background-color: #333;
  margin-bottom: 5px;
}
```

JavaScript:
```javascript
document.querySelector(".menu-toggle").addEventListener("click", function() {
  var nav = document.querySelector("nav ul");
  nav.style.display = nav.style.display === "block" ? "none" : "block";
});
```

В данном примере добавляется элемент с классом "menu-toggle" для отображения/скрытия меню в мобильной версии сайта. При клике на этот элемент меняется значение свойства "display" для списка ul внутри меню, что позволяет отображать или скрывать его.
Похожие вопросы