Недавно я делал небольшие изменения на своем сайте , когда я вновь обнаружил меню гамбургера, которое я сделал для него. В нем нет ничего особенного, просто меню, которое при небольшом разрешении сжимается в скрытое вертикальное меню, которое можно показать или скрыть нажатием кнопки. Самое интересное, что оно сделано только с помощью HTML и CSS.
Я помню, что когда я его создавал, я не смог найти в интернете полного примера того, как этого добиться, и что это предполагало много проб и ошибок для достижения желаемого результата. Поэтому я извлек код меню и превратил его в упрощенный пример.
Когда я начинал этот проект, у меня было несколько требований, которым он должен соответствовать:
Проект состоит из следующих шагов:
Меню - это, в конечном счете, список ссылок, используемых для навигации, поэтому мы начнем с него:
<nav> <!-- Always visible items in the nav bar --> <ul> <li> <a href = "https://threkk.com">threkk.com</a> </li> </ul> <!-- The collapsable menu --> <ul> <li><a href='https://mastodon.social/@threkk'>Mastodon</a></li> <li><a href='https://twitter.com/threkk'>Twitter</a></li> <li><a href='https://github.com/threkk'>Github</a></li> </ul> </nav>
Этот список - практически весь HTML, который мы будем использовать для всего меню, остальное - магия CSS.
Эта часть проста, с небольшим количеством CSS мы готовы. Вам решать, что будет выглядеть красиво:
nav { background-color: SeaGreen; color: snow; display: flex; justify-content: space-between; } nav ul { /* Make the markers disappear */ list-style-type: none; } nav ul li { /* Puts the elements in a single line */ display: inline-flex; margin: 0.3em 1em; }
Мы закончили с этой частью и не будем вносить в нее никаких изменений.
Используя медиа-запросы, мы ограничиваем следующие правила только маленькими разрешениями. Вы можете поиграть с используемым значением в зависимости от того, хотите ли вы, например, считать планшеты "маленькими устройствами".
@media (max-width: 576px) { nav { flex-direction: row; flex-wrap: wrap; margin-left: 0; margin-right: 0; } /* Because we are in mobile mode, we want to display it as a vertical list */ nav ul { display: block; } /* We have two lists: the first one are the always visibile items in the menu bar. The second one is the one that will be hidden */ nav ul:last-child { width: 100%; flex-basis: 100%; } nav ul li { margin-bottom: 0; width: 100%; text-align: right; padding: 0.5em; } }
Наконец, самая интересная часть. Вся магия здесь: если флажок не отмечен, то соседний список не отображается.
input[type='checkbox']:not(:checked)+ul { display: none; }
Сначала мы добавим флажок с меткой в наш HTML.
<nav> <!-- Always visible items in the nav bar --> <ul> <li> <a href = "https://threkk.com">threkk.com</a> </li> </ul> <!-- The hamburger menu --> <label for='menu' tabindex = "0"> 🍔 </label> <input id='menu' type='checkbox' /> <!-- The collapsable menu --> <ul> <li><a href='https://mastodon.social/@threkk'>Mastodon</a></li> <li><a href='https://twitter.com/threkk'>Twitter</a></li> <li><a href='https://github.com/threkk'>Github</a></li> </ul> </nav>
Флажок и метка будут скрыты на больших экранах, и их значение не будет иметь значения.
nav input[type='checkbox'], nav label { display: none; }
Но в небольших разрешениях мы отображаем метку, а флажок оставляем скрытым в эстетических целях.
/* Stlying the menu icon, the checkbox stays hidden */ nav label { text-align: right; display: block; padding: 0.5em; line-height: 1.6em; align-self: center; }
И вуаля. Вот и все. Вы можете увидеть полный пример в действии здесь , и вы можете проверить полный исходный код на GitHub .
Вам понравился этот пост? Дайте мне знать на Mastodon или Twitter!
05.05.2023 14:00
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
05.05.2023 11:59
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря своим методам, они делают код очень простым для понимания и читабельным.
05.05.2023 11:57
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний, то, не теряя времени, практикуйте наш бесплатный онлайн тест 1100+ JavaScript MCQs и развивайте свои навыки и знания.
05.05.2023 09:26