From 5c51fb2ff34f8a23692a3ba7b48f01d4e48e0b4a Mon Sep 17 00:00:00 2001 From: Dominik Hebeler <dominik@suma-ev.de> Date: Fri, 25 Nov 2022 12:54:11 +0100 Subject: [PATCH] better hamburger menu --- pass/public/styles/base.less | 41 ++++++++++++++++++++++++---- pass/views/templates/page_header.ejs | 8 +++++- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/pass/public/styles/base.less b/pass/public/styles/base.less index 05d635c..cd631a9 100644 --- a/pass/public/styles/base.less +++ b/pass/public/styles/base.less @@ -123,7 +123,28 @@ nav { flex-grow: 1; &:checked { + label { - transform: rotate(90deg); + border-width: 0; + transition: border-width 0ms 0ms; + > svg { + fill: red; + > .line { + transition: y 300ms ease-in 0ms, rotate 300ms ease-in 300ms, + opacity 0ms 300ms, fill 300ms ease-in 300ms; + //y 300ms ease-in, rotate 300ms ease-in 300ms, + // opacity 0ms 300ms, fill 300ms ease-in 300ms; + &.top { + y: 45px; + rotate: 45deg; + } + &.middle { + opacity: 0; + } + &.bottom { + y: 45px; + rotate: -45deg; + } + } + } } ~ ul { max-height: 500px; @@ -132,16 +153,24 @@ nav { } } } - //display: none; > label[for="nav-opener"] { + --navbar-opener-color: white; display: flex; margin: 1rem; align-items: center; - transition: transform 1s; + border: 1px solid var(--navbar-opener-color); + border-radius: 0.4rem; cursor: pointer; - - > img { - width: 1.5em; + transition: border-width 0ms 600ms; + > svg { + fill: var(--navbar-opener-color); + + > .line { + transition: rotate 300ms ease-in 0ms, opacity 0ms 300ms, + y 300ms ease-in 300ms, fill 300ms ease-in 300ms; + rotate: 0deg; + transform-origin: center; + } } } } diff --git a/pass/views/templates/page_header.ejs b/pass/views/templates/page_header.ejs index fb787aa..a9b4bc8 100644 --- a/pass/views/templates/page_header.ejs +++ b/pass/views/templates/page_header.ejs @@ -24,7 +24,13 @@ </a> </div> <input type="checkbox" name="nav-opener" id="nav-opener" aria-hidden="true"> - <label for="nav-opener"><img src="/images/hamburger-menu.svg" alt="Open Menu"></label> + <label for="nav-opener"> + <svg class="hamburger" viewBox="0 0 100 100" width="2rem" height="2rem"> + <rect class="line top" x="10" y="25" width="80" height="10" rx="5"></rect> + <rect class="line middle" x="10" y="45" width="80" height="10" rx="5"></rect> + <rect class="line bottom" x="10" y="65" width="80" height="10" rx="5"></rect> + </svg> + </label> <ul> <li><a href="#">Informationen</a></li> <li><a href="#">Preise</a></li> -- GitLab