@JoshGeorge

Меню бургер при определенном размере?

Здравствуйте, подскажите пожалуйста: вот есть меню "бургер", написанное на html и css, сейчас оно постоянно в форме "бургера" при любых размерах экрана, как сделать так чтобы оно становилось "бургером" только при размере экрана 767px, а при остальных размерах было обычным меню? Что нужно прописать в: media (max-width:767px)? Чего только не перепробовал, то меню пропадает, то еще что-то.
Вот само меню:
Html:
<div class="hamburger-menu">
		<input id="menu__toggle" type="checkbox" />
		<label class="menu__btn" for="menu__toggle">
		<span></span>
		</label>
	<ul class="menu__box">
		<li><a class="menu__item" href="#">Главная</a></li>
		<li><a class="menu__item" href="#">Проекты</a></li>
		<li><a class="menu__item" href="#">Команда</a></li>
		<li><a class="menu__item" href="#">Блог</a></li>
		<li><a class="menu__item" href="#">Контакты</a></li>
	</ul>

Css:
#menu__toggle {
	opacity: 0;
}

.menu__btn {
	display: flex; 
	align-items: center;  
	position: fixed;
	top: 20px;
	left: 20px;
	width: 26px;
	height: 26px;
	cursor: pointer;
	z-index: 1;
}

.menu__btn > span,
.menu__btn > span::before,
.menu__btn > span::after {
	display: block;
	position: absolute;
	width: 100%;
	height: 2px;
	background-color: #616161;
}
.menu__btn > span::before {
	content: '';
	top: -8px;
}
.menu__btn > span::after {
	content: '';
	top: 8px;
}

.menu__box {
	display: block;
	position: fixed;
	visibility: hidden;
	top: 0;
	left: -100%;
	width: 300px;
	height: 100%;
	margin: 0;
	padding: 80px 0;
	list-style: none;
	text-align: center;
	background-color: #ECEFF1;
	box-shadow: 1px 0px 6px rgba(0, 0, 0, .2);
}

.menu__item {
	display: block;
	padding: 12px 24px;
	color: #333;
	font-family: 'Roboto', sans-serif;
	font-size: 20px;
	font-weight: 600;
	text-decoration: none;
}
.menu__item:hover {
	background-color: #CFD8DC;
}


#menu__toggle:checked ~ .menu__btn > span {
  transform: rotate(45deg);
}
#menu__toggle:checked ~ .menu__btn > span::before {
  top: 0;
  transform: rotate(0);
}
#menu__toggle:checked ~ .menu__btn > span::after {
  top: 0;
  transform: rotate(90deg);
}
#menu__toggle:checked ~ .menu__box {
  visibility: visible;
  left: 0;
}

.menu__btn > span,
.menu__btn > span::before,
.menu__btn > span::after {
  transition-duration: .25s;
}
.menu__box {
  transition-duration: .25s;
}
.menu__item {
  transition-duration: .25s;
}
  • Вопрос задан
  • 5411 просмотров
Решения вопроса 1
approximate_solution
@approximate_solution
JS Developer. Angular\React\Vue\Ember
Переписывать ваш бесовской код долго.

https://www.w3schools.com/howto/howto_js_topnav_re...

Изучите данный код и поймете весь алгоритм, а он такой.

До разрешения 768px burger-menu показывается с помощью display: block(либо любым другим способом) - навигация ul скрыта, и появляется по клику. От 768px и выше, сам бургер скрыт, а ul display: flex, т.е принимает внешний вид обычного меню.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы