responsive navbar
This commit is contained in:
parent
23f70a942a
commit
ad47737555
3 changed files with 66 additions and 22 deletions
|
@ -3,17 +3,17 @@ import navbarPages from "../data/navbarPages.json";
|
||||||
---
|
---
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div class="bg-black flex justify-between items-center p-2">
|
<div class="bg-black flex justify-between items-center">
|
||||||
<div class="h-20 flex items-center">
|
<div class="h-20 flex items-center p-2 z-10 w-auto scale-[85%]">
|
||||||
<img src="logos/ieeelogo_full.png" class="h-16" alt="IEEE Logo" />
|
<img src="logos/ieeelogo_full.png" class="h-14" alt="IEEE Logo" />
|
||||||
</div>
|
</div>
|
||||||
<nav class="2xl:flex items-center px-6 hidden">
|
<nav class="xl:block items-center px-6 hidden">
|
||||||
<ul>
|
<ul>
|
||||||
{
|
{
|
||||||
navbarPages.map((page) => (
|
navbarPages.map((page) => (
|
||||||
<a
|
<a
|
||||||
href={page.url}
|
href={page.url}
|
||||||
class="text-white hover:text-gray-300 px-3 py-2 rounded-md text-xl"
|
class="font-extrabold text-ieee hover:text-gray-300 px-3 py-2 rounded-md text-xl"
|
||||||
>
|
>
|
||||||
{page.name}
|
{page.name}
|
||||||
</a>
|
</a>
|
||||||
|
@ -21,7 +21,28 @@ import navbarPages from "../data/navbarPages.json";
|
||||||
}
|
}
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="2xl:hidden z-5 mr-2">
|
<nav
|
||||||
|
class="xl:hidden absolute top-[80px] w-full bg-black overflow-y-hidden transition-all duration-500 -translate-y-full z-0"
|
||||||
|
style="height: calc(100vh - 80px);"
|
||||||
|
id="secondNav"
|
||||||
|
>
|
||||||
|
<ul
|
||||||
|
class="block text-center mt-[80px] mx-auto mb-0 my-auto w-fit"
|
||||||
|
id="navbar-list"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
navbarPages.map((page) => (
|
||||||
|
<a
|
||||||
|
href={page.url}
|
||||||
|
class=" block font-extrabold text-xl text-ieee hover:text-gray-300 pb-10 rounded-md opacity-0"
|
||||||
|
>
|
||||||
|
{page.name}
|
||||||
|
</a>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<div class="xl:hidden z-5 mr-2 z-10">
|
||||||
<button
|
<button
|
||||||
class="hamburger hamburger--collapse flex bg-white p-0 m-0"
|
class="hamburger hamburger--collapse flex bg-white p-0 m-0"
|
||||||
color="#FFFFFF"
|
color="#FFFFFF"
|
||||||
|
@ -36,17 +57,38 @@ import navbarPages from "../data/navbarPages.json";
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// Look for .hamburger
|
|
||||||
var hamburger = document.querySelector(".hamburger");
|
var hamburger = document.querySelector(".hamburger");
|
||||||
// Check if hamburger element exists
|
var secondNav = document.querySelector("#secondNav");
|
||||||
if (hamburger) {
|
var navbarListItems = document.querySelectorAll("#navbar-list a");
|
||||||
// On click
|
|
||||||
|
if (hamburger && secondNav && navbarListItems) {
|
||||||
hamburger.addEventListener("click", function () {
|
hamburger.addEventListener("click", function () {
|
||||||
// Toggle class "is-active"
|
hamburger.classList.toggle("is-active");
|
||||||
if (hamburger) {
|
|
||||||
hamburger.classList.toggle("is-active");
|
if (secondNav.classList.contains("-translate-y-full")) {
|
||||||
|
secondNav.classList.remove("-translate-y-full");
|
||||||
|
secondNav.classList.add("translate-y-0");
|
||||||
|
|
||||||
|
navbarListItems.forEach((item, index) => {
|
||||||
|
setTimeout(
|
||||||
|
() => {
|
||||||
|
let htmlItem = item as HTMLElement;
|
||||||
|
htmlItem.style.transition = "opacity 0.5s ease";
|
||||||
|
htmlItem.style.opacity = "1";
|
||||||
|
},
|
||||||
|
500 + index * 100
|
||||||
|
);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
navbarListItems.forEach((item) => {
|
||||||
|
let htmlItem = item as HTMLElement;
|
||||||
|
htmlItem.style.opacity = "0";
|
||||||
|
});
|
||||||
|
setTimeout(() => {
|
||||||
|
secondNav.classList.remove("translate-y-0");
|
||||||
|
secondNav.classList.add("-translate-y-full");
|
||||||
|
}, 500);
|
||||||
}
|
}
|
||||||
// Do something else, like open/close menu
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "Home",
|
"name": "HOME",
|
||||||
"url": "/"
|
"url": "/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Events",
|
"name": "EVENTS",
|
||||||
"url": "/events"
|
"url": "/events"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Projects",
|
"name": "PROJECTS",
|
||||||
"url": "/projects"
|
"url": "/projects"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Committees",
|
"name": "COMMITTEES",
|
||||||
"url": "/committees"
|
"url": "/committees"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Contact Us",
|
"name": "CONTACT US",
|
||||||
"url": "/contactus"
|
"url": "/contact"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
{
|
{
|
||||||
"extends": "astro/tsconfigs/strict"
|
"compilerOptions": {
|
||||||
}
|
"allowSyntheticDefaultImports": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue