diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2024-06-28 20:49:32 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2024-06-28 20:49:32 -0400 |
| commit | fd1d608df8544873f8f8325e0507db1c59723549 (patch) | |
| tree | de342b764dbc49abbb443dd4ad20dd7930ca3c0e /src/components/Navbar.svelte | |
| parent | 68834f7880348f247674643f753a69609b6c6afc (diff) | |
| download | personal-website-fd1d608df8544873f8f8325e0507db1c59723549.tar.gz personal-website-fd1d608df8544873f8f8325e0507db1c59723549.tar.bz2 personal-website-fd1d608df8544873f8f8325e0507db1c59723549.zip | |
Converted navbar to svelte
Diffstat (limited to 'src/components/Navbar.svelte')
| -rw-r--r-- | src/components/Navbar.svelte | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/components/Navbar.svelte b/src/components/Navbar.svelte new file mode 100644 index 0000000..9ceca5b --- /dev/null +++ b/src/components/Navbar.svelte @@ -0,0 +1,115 @@ +<script> + let active = false; + + const toggleNav = () => { + active = !active; + }; +</script> + +<style> + nav { + font-weight: 300; + padding-top: 1.5em; + padding-bottom: 2.2em; + } + ul.nav-list { + list-style-type: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: row; + justify-content: center; + gap: 2.2em; + } + + a.nav-link { + font-size: 1.1em; + } + + a.nav-link:hover { + color: #9ECD9D; + transition: ease-in-out 0.1s; + } + + a.nav-link:active { + color: #609460; + } + + .nav-toggle { + background: transparent; + border: none; + cursor: pointer; + display: none; + } + + .nav-toggle .hamburger { + width: 30px; + height: 2px; + background: white; + display: block; + position: relative; + } + + .nav-toggle .hamburger::before, .nav-toggle .hamburger::after { + content: ''; + background: white; + display: block; + position: absolute; + width: 100%; + height: 100%; + } + + .nav-toggle .hamburger::before { + top: -10px; + } + + .nav-toggle .hamburger::after { + bottom: -10px; + } + + @media (max-width: 768px) { + .nav-toggle { + display: block; + padding: 20px; + } + + ul.nav-list { + flex-direction: column; + align-items: center; + gap: 1em; + display: none; + } + + ul.nav-list.show { + display: flex; + } + + @keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + + .nav-list.show a.nav-link { + animation: fadeIn 0.5s ease-in-out forwards; + } + } + +</style> + +<nav> + <button class="nav-toggle" aria-label="toggle navigation" on:click={toggleNav}> + <span class='hamburger'></span> + </button> + <ul class={active ? 'nav-list show' : 'nav-list'}> + <li><a href="/" class="nav-link" on:click={toggleNav}>Home</a></li> + <li><a href="/projects" class="nav-link" on:click={toggleNav}>Projects</a></li> + <li><a href="/blog" class="nav-link" on:click={toggleNav}>Blog</a></li> + <li><a href="/guestbook" class="nav-link" on:click={toggleNav}>Guestbook</a></li> + <li><a href="https://archive.alee14.me" class="nav-link" on:click={toggleNav}>Archive</a></li> + <li><a href="/contacts" class="nav-link" on:click={toggleNav}>Contacts</a></li> + </ul> +</nav> |
