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 | |
| 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')
| -rw-r--r-- | src/components/Navbar.jsx | 29 | ||||
| -rw-r--r-- | src/components/Navbar.svelte | 115 |
2 files changed, 115 insertions, 29 deletions
diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx deleted file mode 100644 index f76a5f2..0000000 --- a/src/components/Navbar.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Component } from 'preact'; -import '../styles/Navbar.css'; - -class Navbar extends Component { - toggleNav = () => { - document.querySelector('.nav-toggle').classList.toggle('active'); - document.querySelector('.nav-list').classList.toggle('show'); - } - - render() { - return ( - <nav> - <button class="nav-toggle" aria-label="toggle navigation" onClick={this.toggleNav}> - <span class='hamburger'></span> - </button> - <ul class="nav-list"> - <li><a href="/" class="nav-link" onClick={this.toggleNav}>Home</a></li> - <li><a href="/projects" class="nav-link" onClick={this.toggleNav}>Projects</a></li> - <li><a href="/blog" class="nav-link" onClick={this.toggleNav}>Blog</a></li> - <li><a href="/guestbook" class="nav-link" onClick={this.toggleNav}>Guestbook</a></li> - <li><a href="https://archive.alee14.me" class="nav-link" onClick={this.toggleNav}>Archive</a></li> - <li><a href="/contacts" class="nav-link" onClick={this.toggleNav}>Contacts</a></li> - </ul> - </nav> - ); - } -} - -export default Navbar; 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> |
