DevGang
Авторизоваться

3 способа переключения видимости мобильной навигации в CSS

Как фронтенд-разработчику, мне иногда нужно изменить видимость мобильной навигации или других элементов пользовательского интерфейса без использования JavaScript. Хотя на первый взгляд это может показаться сложным, вы можете легко сделать это с помощью CSS. В этой статье я покажу вам три простых способа сделать это.

1. Checkbox Hack

Hack с флажками — это гениальный способ использовать псевдокласс :checked для манипулирования другими элементами.

HTML:

<label for="menuToggle" class="menu-toggle">Menu</label>
<input type="checkbox" id="menuToggle" class="menu-checkbox">
<nav class="mobile-nav">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>

CSS:

.menu-toggle {
  cursor: pointer;
  background-color: #333;
  color: #fff;
  padding: .5rem 1rem;
}

.menu-checkbox {
  display: none;
}

.mobile-nav {
  display: none;
}

.menu-checkbox:checked ~ .mobile-nav {
  display: block;
}

2. Использование псевдокласса :focus-within

Использование псевдокласса :focus-within — еще один удобный способ переключения видимости.

HTML:

<a href="#" class="menu-toggle">Menu</a>
<nav class="mobile-nav">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>

CSS:

.menu-toggle {
  background-color: #333;
  color: #fff;
  padding: .5rem 1rem;
  text-decoration: none;
}

.mobile-nav {
  display: none; 
}

.menu-toggle:focus-within + .mobile-nav {
  display: block; 
}

3. Использование псевдокласса :target

Этот метод основан на псевдоклассе :target, который срабатывает, когда элемент с идентификатором соответствует текущему фрагменту URL-адреса.

HTML:

<div id="mobileNav">
  <a href="#mobileNav" class="menu-toggle menu-open">Menu</a>
  <a href="#" class="menu-toggle menu-close">Close</a>
  <nav class="mobile-nav">
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>
</div>

CSS:

.menu-toggle {
  background-color: #333;
  color: #fff;
  padding: .5rem 1rem;
  text-decoration: none;
}

#mobileNav:not(:target) .mobile-nav,
#mobileNav:not(:target) .menu-close {
  display: none;
}

#mobileNav:target .menu-open {
  display: none;
}

Заключение

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

Источник:

#CSS #HTML
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу