برنامه نویسی
Mega Navbar – HTML/CSS – DEV Community 👩💻👨💻

سلام به همه، امروز نحوه ایجاد Meganav با HTML، CSS و جاوا اسکریپت را نشان خواهم داد.
بیا شروع کنیم…
<header>
<nav>
<ul class="meganav">
<li class="meganav--item">
<a href="#" class="meganav--link">Home</a>
</li>
<li class="meganav--item">
<a href="#" class="meganav--link">Frontend</a>
<div class="meganav--content">
<img src="image-link" />
<ul class="meganav--content__items">
<li><a href="#">HTML</a></li>
<li><a href="#">CSS</a></li>
<li><a href="#">JAVASCRIPT</a></li>
<li><a href="#">REACT JS</a></li>
<li><a href="#">NEXT JS</a></li>
</ul>
</div>
</li>
<li class="meganav--item">
<a href="#" class="meganav--link">Backend</a>
<div class="meganav--content">
<img src="image-linkg" />
<ul class="meganav--content__items">
<li><a href="#">NODE JS</a></li>
<li><a href="#">EXPRESS JS</a></li>
<li><a href="#">MONGO DB</a></li>
<li><a href="#">FIREBASE</a></li>
<li><a href="#">MY SQL</a></li>
</ul>
</div>
</li>
<li class="meganav--item">
<a href="#" class="meganav--link">Home</a>
</li>
<li class="meganav--item">
<a href="#" class="meganav--link">Contact</a>
</li>
</ul>
</nav>
</header>
- من یک نوار ناوبری با موارد ناوبری ایجاد کرده ام
- 2 مورد وجود دارد که ما پیوندهای meganav، frontend و backend را نشان خواهیم داد.
- هر دو لینک Frontend و Backend دارای یک عنصر div برادر هستند که محتوای meganav را نگه می دارد.
- کاری که ما انجام خواهیم داد این است که یک افکت شناور به کلاس “.meganav–item” اضافه کنیم و کدورت “.meganav–content” را با آن تغییر دهیم. این قسمت را در قسمت CSS دریافت خواهید کرد
- من از SASS فقط برای کلاس های تودرتو استفاده می کنم، تمام کدهای اینجا CSS خالص هستند.
header {
position: relative;
}
.meganav {
display: flex;
justify-content: center;
align-items: center;
gap: 1rem;
background-color: black;
&--link {
color: white;
}
&--item {
padding: 1rem 0;
display: flex;
justify-content: center;
flex-wrap: wrap;
}
&--content {
position: absolute;
top: 120%;
left: 50%;
transform: translateX(-50%);
display: flex;
justify-content: space-between;
align-items: center;
gap: 1rem;
width: 90%;
height: 200px;
border-radius: 10px;
box-shadow: 2px 2px 50px 2px #000000;
padding: 1rem 1.5rem;
opacity: 0;
visibility: hidden;
transition: all 0.3s ease-in-out;
background-color: white;
& > img {
width: 200px;
height: 100px;
}
&__items {
width: 50%;
display: flex;
flex-wrap: wrap;
gap: 1.5rem;
& > li > a {
color: black;
}
}
}
&--item:hover &--content {
opacity: 1;
visibility: visible;
top: 100%;
}
}
- “.meganav–content” نسبت به سرصفحه ای که نسبی است موقعیت مطلق می شود.
- “&” این نماد در اینجا انتخابگر والد در SASS است، کاری که انجام می دهد این است که نام کلاس والد را می گیرد و آن را به متن بعد از آن اضافه می کند. به عنوان مثال “&–item:hover &–content” به معنی “.meganav–item:hover .meganav–content” است.
- “&–item:hover &–content” برای این بخش، آنچه در اینجا اتفاق میافتد این است که وقتی آیتم meganav نگهداشته میشود، مات بودن و نمایان بودن “.meganav–content” را به 1 تغییر میدهیم و قابل مشاهده است. فقط در شناور قابل مشاهده است.”top:100%” فقط برای اثر گذار است.
@media screen and (max-width: 600px) {
.meganav {
flex-direction: column;
&--content {
position: static;
display:none;
width: 100%;
height: 250px;
margin: 10px 0 0 0;
&__items {
width: 100%;
flex-direction: column;
align-items: center;
padding: 1.5rem;
}
& > img {
display: none;
}
}
}
.show {
display: flex;
opacity: 1;
visibility: visible;
transform: translateX(0);
}
}
- ما فقط “meganav–content” را در موقعیت ایستا قرار می دهیم و با استفاده از “display:none” آن را پنهان می کنیم. همچنین در دستگاه تلفن همراه، meganav – تصاویر محتوا را پنهان می کنیم و فقط پیوندها را نشان می دهیم.
- کلاس “.show” برای جابجایی پیوندهای meganav با استفاده از جاوا اسکریپت استفاده می شود.
جاوا اسکریپت –
const meganav = document.querySelectorAll(".meganav--link");
if (window.innerWidth < 600) {
Array.from(meganav).forEach((item) => {
item.addEventListener("click", (e) => {
const target = e.target;
if (target.nextElementSibling !== null) {
target.nextElementSibling.classList.toggle("show");
}
});
});
}
- ما همه پیوندهای دارای کلاس “.meganav–link” را انتخاب می کنیم و یک شنونده رویداد کلیکی را به آنها وصل می کنیم.
- وقتی روی هر پیوندی کلیک میشود، بررسی میکند که آیا عنصر خواهر و برادر بعدی دارد یا نه، اگر دارد، کلاس «نمایش» را به عنصر خواهر و برادری که مگاناو است تغییر دهید – محتوای اینجا
- همچنین با استفاده از “window.innerWidth”، این افکت جابجایی را فقط زمانی اعمال میکنیم که وسعت دید کمتر از 600 پیکسل باشد.
از اینکه این پست را بررسی کردید متشکرم
می توانید با من تماس بگیرید –
اینستاگرام – https://www.instagram.com/supremacism__shubh/
لینکدین – https://www.linkedin.com/in/shubham-tiwari-b7544b193/
ایمیل – shubhmtiwri00@gmail.com
^^میتونید در لینک زیر کمکم کنید ممنون👇👇 ^^
☕ –> https://www.buymeacoffee.com/waaduheck <--
این پست ها را نیز بررسی کنید
https://dev.to/shubhamtiwari909/website-components-you-should-know-25nm
https://dev.to/shubhamtiwari909/smooth-scrolling-with-js-n56
https://dev.to/shubhamtiwari909/swiperjs-3802
https://dev.to/shubhamtiwari909/custom-tabs-with-sass-and-javascript-4dej