Как мы чинили мобильное меню на WordPress

От:

Проблема возникала при использовании темы Louis. На телефоне в горизонтальном положении меню само раскрывалось и перекрывало текст. В вертикальном — работало идеально (бургер, меню скрыто). Нужно было заставить меню вести себя одинаково в обоих положениях.

Карта месторождений

1. Главный штаб — Настройки меню

Путь: Админка — Внешний вид — Меню

Здесь создаются пункты, иерархия, назначается область primary. Однако поведение меню (как оно открывается/закрывается) тут не настраивается

2. Полигон для испытаний — Дополнительный CSS

Путь: Админка — Внешний вид — Настроить — Дополнительные стили

Это самое безопасное место для экспериментов. Код применяется сразу в предпросмотре. Если что-то сломалось — просто удаляем код

3. Инструмент разведчика — Инспектор браузера

На сайте жмём F12 (или правая кнопка — «Просмотреть код»). Нажимаем иконку «Toggle device toolbar» (или Ctrl+Shift+M). В верхней панели выбираем устройство, например, iPhone SE или Pixel 5. Не нажимаем кнопку поворота. Вместо этого вручную меняем размеры: просто тянем за край окна эмуляции, чтобы ширина стала больше высоты. Как только ширина превысит высоту — сработает @media (orientation: landscape) и применятся новые стили.

Вкладки:

  • Elements (Элементы) — смотрим HTML структуру
  • Console (Консоль) — выполняем команды

Как мы нашли виновников (метод расследования)

Шаг 1. Ищем главный контейнер меню

Ключевые классы: #cssmenu, #menu-button

Шаг 2. Следим за кнопкой

Нажали на бургер → смотрим, что меняется:

Класс-переключатель: menu-opened

Шаг 3. Смотрим, как открываются подменю

Внутри пунктов, например, типа «Железо» есть:

Классы для подменю: submenu-button, submenu-opened, open

Финальный код:

Объяснение финального кода

Пояснения

СтрокаЧто делаетПочему это важно
@media (orientation: landscape)Ловит только горизонтальное положениеНе ломает вертикальный режим
#cssmenu > ulБерёт ТОЛЬКО прямой список менюНе трогает вложенные подменю внутри
display: none/blockПросто прячет/показываетНе лезет в логику JavaScript
+ ulСоседний селекторБерёт именно тот список, что сразу за кнопкой

Словарик

ТерминЧто значитГде искать
БургерИконка ☰, открывающая меню#menu-button
КлассИмя элемента в CSS (начинается с точки)В инспекторе после class=»…»
IDУникальное имя элемента (начинается с #)В инспекторе после id=»…»
Медиа-запросУсловие для разных экранов@media (…)
ПсевдоэлементИскусственный элемент в CSS::before, ::after
!importantПриказ выполнить любой ценойСтавится в конце правила

Теперь в мобильной версии при повороте экрана работает корректно


Комментарии закрыты