المعرفة:: CSS, JavaScript الحالة::مؤرشفة
<header class="header">
<a href="#">
<img class="logo" alt="Omnifood logo" src="img/omnifood-logo.png" />
</a>
<nav class="main-nav">
<ul class="main-nav-list">
<li><a class="main-nav-link" href="#how">How it works</a></li>
<li><a class="main-nav-link" href="#meals">Meals</a></li>
<li>
<a class="main-nav-link" href="#testimonials">Testimonials</a>
</li>
<li><a class="main-nav-link" href="#pricing">Pricing</a></li>
<li><a class="main-nav-link nav-cta" href="#cta">Try for free</a></li>
</ul>
</nav>
<button class="btn-mobile-nav">
<ion-icon class="icon-mobile-nav" name="menu-outline"></ion-icon>
<ion-icon class="icon-mobile-nav" name="close-outline"></ion-icon>
</button>
</header>
/* MOBILE */
.btn-mobile-nav {
border: none;
background: none;
cursor: pointer;
display: none;
}
.icon-mobile-nav {
height: 4.8rem;
width: 4.8rem;
color: #333;
}
.icon-mobile-nav[name="close-outline"] {
display: none;
}
/**************************/
/* BELOW 944px (Tablets) */
/**************************/
@media (max-width: 59em) {
html {
/* 8px / 16px = 0.5 = 50% */
font-size: 50%;
}
.main-nav {
/* White Background */
background-color: rgba(255, 255, 255, 0.9);
/* Blur */
-webkit-backdrop-filter: blur(5px);
backdrop-filter: blur(10px);
/* Positioning */
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100vh;
transform: translateX(100%);
/* Display */
display: flex;
align-items: center;
justify-content: center;
/* Transition */
transition: all 0.5s ease-in;
/* Hide navigation */
/* 1) Hide it visually */
opacity: 0;
/* 2) Make it unaccessible to mouse and keyboard */
pointer-events: none;
/* 3) Hide it from screen readers */
visibility: hidden;
}
.nav-open .main-nav {
/* Show navigation */
opacity: 1;
pointer-events: auto;
visibility: visible;
transform: translateX(0);
}
/* Toggle menu icons visibility based on its state */
.nav-open .icon-mobile-nav[name="close-outline"] {
display: block;
}
.nav-open .icon-mobile-nav[name="menu-outline"] {
display: none;
}
/* Change list layout direction */
.main-nav-list {
flex-direction: column;
gap: 4.8rem;
}
/* Update links font size */
.main-nav-link:link,
.main-nav-link:visited {
font-size: 3rem;
}
}
const btnNavEl = document.querySelector(".btn-mobile-nav");
const headerEl = document.querySelector(".header");
// Make mobile navigation work by setting a click listener on navigation button that will toggle menu by adding/removing CSS class
btnNavEl.addEventListener("click", () => headerEl.classList.toggle("nav-open"));