diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index e02dfa0bdc86874bba3439d546ea8279caf0e2c5..68fa269630c5c65084fc36589b12569355eeb4eb 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -41,6 +41,43 @@ </div> </nav> + + <nav class="hamburger"> + <input type="checkbox" /> + + <div class="patty"> + <i></i> + <i></i> + <i></i> + </div> + + <ul> + {{ $currentPage := . }} + {{ range .Site.Menus.main }} + <li><a class="menu-item{{if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }} active{{end}}" href="{{ .URL }}" title="{{ .Title }}">{{ .Name }}</a></li> + {{ end }} + <li class="fatty"></li> + {{ if .Site.IsMultiLingual }} + {{ $lang := .Site.Language }} + {{ range .Site.Languages }} + <li> + {{ $translated := where $.Translations "Lang" .Lang }} + {{ if $translated }} + {{ $.Scratch.Set "url" (index $translated 0).Permalink }} + {{ else if eq .Lang $.Page.Lang }} + {{ $.Scratch.Set "url" $.Permalink }} + {{ else }} + {{ $.Scratch.Set "url" (delimit (slice "/" .) "") }} + {{ end }} + <a href="{{ $.Scratch.Get "url" }}" class="lang"> + {{ .LanguageName }} + </a> + </li> + {{ end }} + {{ end }} + </ul> + </nav> + <article> <header class="{{ .Params.Color | default "blue" }}"> <h1>{{.Title}}</h1> diff --git a/layouts/shortcodes/officehours.html b/layouts/shortcodes/officehours.html index f171e2ebc00088f002d76d58eea5799aa72e0fbc..c26489db8cfd478ff18664063d86c652cafefe6f 100644 --- a/layouts/shortcodes/officehours.html +++ b/layouts/shortcodes/officehours.html @@ -1,5 +1,5 @@ <ul> {{ range getJSON "https://sprechstunden.stusta.de/appointments.json"}} - <li>{{ dateFormat "Monday, Jan 2, 2006 15:04" (int .start) }}-{{ dateFormat "15:04" (int .end) }}</li> + <li>{{ dateFormat "Monday, Jan 2, 2006 15:04" (int .start) }} – {{ dateFormat "15:04" (int .end) }}</li> {{ end }} </ul> diff --git a/static/css/main.css b/static/css/main.css index 47c7f4aee899aa21d6f45c2c5831f697ca5fe88a..7c458f95b4eff9b022f9a8fdca9a06ac68c01c23 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -44,6 +44,7 @@ body { display: inline-block; flex: 1 1 0; height: 30px; + padding: 12px 0; } #top-bar .logo a { @@ -56,6 +57,123 @@ body { background-repeat: no-repeat; } +.hamburger { + display: none; + position: fixed; + top: 0; + bottom: 0; + right: 0; + z-index: 1000; + + width: 400px; + overflow: hidden; + + pointer-events: none; +} + +.hamburger input { + z-index: 1200; + opacity: 0; + cursor: pointer; + margin: 0; + pointer-events: all; +} + +.hamburger input, +.hamburger .patty { + position: absolute; + right: 16px; + top: 8px; + width: 32px; + height: 32px; +} + +.hamburger .patty { + z-index: 1100; + padding-top: 4px; + box-sizing: border-box; +} + +.hamburger ul { + pointer-events: all; + background: white; + position: absolute; + top: 0; + bottom: 0; + right: 0; + z-index: 10; + + width: 300px; + padding: 64px 50px 32px 50px; + margin: 0; + display: flex; + flex-direction: column; + + background: white; + box-shadow: 0 0 8px 0 rgba(0,0,0,0.12); + -webkit-font-smoothing: antialiased; + /* to stop flickering of text in safari */ + box-sizing: border-box; + + transform-origin: 0% 0%; + transform: translate(308px, 0); + + transition: transform 0.5s ease; + + list-style-type: none; +} + +.hamburger .fatty { + flex: 1 1 0; +} + +.patty i { + position: relative; + display: block; + width: 26px; + height: 4px; + background: #4B4B4B; + transition: 0.3s all ease; + transform: translate(0, 0) rotate(0) scale(1.0); + transform-origin: 4px 0; + border-radius: 4px; + margin: 4px 0 0 3px; +} + +.hamburger input:checked ~ ul { + transform: translate(0, 0); +} + +.patty i { + transform-origin: 0% 50%; +} + +.hamburger input:checked ~ .patty i:nth-child(2) { + transform: translate(-3px, 0) rotate(0) scale(0.0); + opacity: 0; +} + +.hamburger input:checked ~ .patty i:first-child { + transform: translate(0, -2px) rotate(45deg); +} +.hamburger input:checked ~ .patty i:last-child { + transform: translate(0, 0) rotate(-45deg); +} + +.hamburger li { + padding: 10px 0; + font-size: 1.2rem; + text-align: center; + margin: 0; +} + +.hamburger .shorthand { + text-transform: uppercase; + font-size: 14px; + margin-right: 5px; +} + + ul.menu { list-style-type: none; margin: 0; @@ -192,6 +310,7 @@ header h1 { margin-left: auto; margin-right: auto; padding: 0 20px; + max-width: 800px; } nav .container { @@ -200,11 +319,6 @@ nav .container { white-space: nowrap; } -article > *, -header h1 { - max-width: 800px; -} - .container .lang-dropdown { color: #1b54ac; } @@ -450,6 +564,14 @@ footer .lang-dropdown { h3 { font-size: 1.2rem; } + + .hamburger { + display: block; + } + + .menu, #top-bar .lang-dropdown { + display: none; + } header h1 { padding: 50px 0 50px;