JSFiddle - React, Tailwind, and code Playground
by Timofey qwe
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<header class="header">
<div class="header__logo">
<picture>
<img...
SCSS
.header {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
&__logo {
position: relative;
margin-bottom: -35px;
z-index: 10;
}
}
.main-menu {
width: 100%;
order: -1;
position: relative;
&__list {
padding: 0;
margin: 0;
list-style:none;
}
&__link {
text-align: center;
display: block;
text-decoration: none;
text-transform: uppercase;
background-color: #81b3d2;
color: #ffffff;
font-weight: 700;
font-size: 18px;
line-height: 40px;
padding: 7px 93px;
border-bottom: 1px solid #678fa8;
border-top: 1px solid #9ac2db;
}
}
.main-menu--closed .main-menu__button {
position: absolute;
width: 23px;
height: 21px;
border: none;
z-index: 2;
bottom: -38px;
right: 20px;
background-color: transparent;
&::after {
content: "";
position: absolute;
width: 23px;
height: 4px;
top: 0;
left: 0;
background-color: #81b3d2;
box-shadow: 0 8px 0 0 #81b3d2, 0 16px 0 0 #81b3d2;
}
}
.main-menu--opened .main-menu__button {
position: absolute;
z-index: 2;
border: none;
width: 23px;
height: 22px;
top: 17px;
right: 20px;
background-color: transparent;
&::after {
content: "";
position: absolute;
width: 23px;
height: 4px;
background-color: #ffffff;
transform: rotate(45deg);
margin-left: -11.5px;
margin-top: -1.5px;
}
&::before {
content: "";
position: absolute;
width: 23px;
height: 4px;
background-color: #ffffff;
transform: rotate(-45deg);
margin-left: -11.5px;
margin-top: -1.5px;
}
}
@media (max-width: 767px) {
.main-menu--closed .main-menu__item {
display: none;
}
.main-menu--opened .main-menu__item {
display: block;
}
.main-menu--nojs .main-menu__item {
display: block;
}
.main-menu--nojs .main-menu__button {
display: none;
}
}
@keyframes show {
0% {
transform: translateY(-223px);
}
...
JavaScript
"use strict";
let navMenu = document.querySelector('.main-menu');
let navButton = document.querySelector('.main-menu__button');
let logo = document.querySelector(".header__logo");
navMenu.classList.remove('main-menu--nojs');
navButton.addEventListener('click', function () {
if (navMenu.classList.contains('main-menu--closed')) {
navMenu.classList.remove('main-menu--closed');
navMenu.classList.add('main-menu--opened');
} else {
navMenu.classList.add('main-menu--closed');
navMenu.classList.remove('main-menu--opened');
}
});
navButton.addEventListener("click", function () {
if (navMenu.classList.contains('main-menu--opened')) {
navMenu.classList.add("show");
logo.classList.add("show");
}
if (navMenu.classList.contains('main-menu--closed')) {
navMenu.classList.remove("show");
logo.classList.remove("show");
}
if (navMenu.classList.contains('main-menu--opened')) {
navMenu.classList.remove("hide");
logo.classList.remove("hide");
}
if (navMenu.classList.contains('main-menu--closed')) {
navMenu.classList.add("hide");
logo.classList.add("hide");
}
});