added hamburger menu

This commit is contained in:
eclipse 2025-02-07 14:02:34 +01:00
parent b94181f395
commit 65e3812f0f
3 changed files with 120 additions and 50 deletions

View File

@ -20,7 +20,7 @@
} }
/* /*
* Modified Pico settings * Modified Pico settings (standard Pico)
*/ */
:root { :root {
--pico-font-family-sans-serif: LinBiolinum, system-ui, "Segoe UI", Roboto, --pico-font-family-sans-serif: LinBiolinum, system-ui, "Segoe UI", Roboto,
@ -35,30 +35,84 @@ a {
--pico-text-decoration: none; --pico-text-decoration: none;
} }
#sun-moon {
background-color: var(--pico-primary); /*
* Override breakpoint settings for hamburger menu (overrides Yohn's Pico fork
*/
@media (max-width: 767px) {
nav[role=navigation][data-breakpoint=my-md] {
flex-wrap: wrap;
overflow: hidden;
} }
/* #sun-moon:not(:checked)::before { nav[role=navigation][data-breakpoint=my-md]:has(input[type=checkbox]:checked) {
background-color: var(--pico-color); overflow: visible;
}
nav[role=navigation][data-breakpoint=my-md] label {
display: block;
}
nav[role=navigation][data-breakpoint=my-md]>[role=list] {
display: none;
flex-direction: column;
align-items: flex-start;
width: 90vw;
max-height: 0;
margin: 0 auto;
background-color: var(--pico-muted-border-color);
box-shadow: var(--pico-box-shadow);
opacity: 0;
transition: max-height var(--pico-transition), opacity var(--pico-transition);
}
nav[role=navigation][data-breakpoint=my-md]>[role=list] li {
width: calc(100% - var(--pico-nav-link-spacing-vertical) * 2);
margin: calc(var(--pico-nav-link-spacing-vertical) * 0.5) var(--pico-nav-link-spacing-vertical);
padding: 0;
}
nav[role=navigation][data-breakpoint=my-md]>[role=list] li>details.dropdown {
width: 100%;
}
nav[role=navigation][data-breakpoint=my-md]>[role=list] li>form[role=search] {
margin-block-end: 0;
}
nav[role=navigation][data-breakpoint=my-md]>[role=list] a {
display: block;
margin: 0;
border-radius: 0;
border-block-end: 1px solid transparent;
transition: border-color var(--pico-transition), color var(--pico-transition);
}
nav[role=navigation][data-breakpoint=my-md]>[role=list] a:hover {
border-bottom-color: var(--pico-underline);
text-decoration: none;
}
nav[role=navigation][data-breakpoint=my-md] input[type=checkbox]:checked~[role=list] {
display: block;
max-height: 100vh;
opacity: 1;
}
} }
#sun-moon:not([aria-invalid]) {
border-color: var(--pico-primary-background);
} */
/* /*
* Settings specific to breakpoints * Settings specific to breakpoints
*/ */
@media (min-width: 576px) { @media (min-width: 576px) {
.card { .card {
max-width: calc(50% - var(--pico-block-spacing-horizontal)); max-width: calc(50% - var(--pico-block-spacing-horizontal) / 2);
} }
} }
@media (min-width: 1024px) { @media (min-width: 1024px) {
.card { .card {
max-width: calc(33% - var(--pico-block-spacing-horizontal)); max-width: calc(33% - var(--pico-block-spacing-horizontal) * 2 / 3);
} }
} }
@ -70,7 +124,7 @@ a {
@media screen and (min-width: 1536px) { @media screen and (min-width: 1536px) {
.card { .card {
max-width: calc(25% - var(--pico-block-spacing-horizontal)); max-width: calc(25% - var(--pico-block-spacing-horizontal) * 3 / 4);
} }
.container { .container {
@ -149,12 +203,8 @@ a {
} }
/* Navbar */ /* Navbar */
#site-navar { #site-navbar {
padding-left: 0; ul {
padding-right: 0;
}
#site-navbar ul {
/* box-shadow: var(--pico-card-box-shadow); */ /* box-shadow: var(--pico-card-box-shadow); */
margin-left: 0; margin-left: 0;
margin-right: 0; margin-right: 0;
@ -164,9 +214,24 @@ a {
} }
} }
#site-navbar a { a {
font-size: calc(var(--pico-font-size) * 0.9); font-size: calc(var(--pico-font-size) * 0.9);
font-weight: bold; font-weight: bold;
text-align: right;
}
}
#hamburger-label {
font-size: calc(var(--pico-font-size) * 2);
}
#sun-moon {
background-color: var(--pico-primary);
}
#sun-moon-label {
margin-left: auto;
margin-right: 0;
} }
/* Main content */ /* Main content */
@ -183,7 +248,8 @@ a {
flex-flow: row wrap; flex-flow: row wrap;
list-style-type: none; list-style-type: none;
padding-left: inherit; padding-left: inherit;
column-gap: var(--pico-block-spacing-horizontal); justify-content: space-between;
/* column-gap: var(--pico-block-spacing-horizontal); */
} }
.card { .card {

View File

@ -3,6 +3,4 @@
<h1><a href="{{ SITEURL }}/">{{ SITENAME }}</a></h1> <h1><a href="{{ SITEURL }}/">{{ SITENAME }}</a></h1>
</div> </div>
</div> </div>
<div class="container" id="jumbotron-subtitle"> <div class="container" id="jumbotron-subtitle">{% include "includes/navbar.html" %}</div>
<nav id="site-navbar">{% include "includes/navbar.html" %}</nav>
</div>

View File

@ -1,20 +1,26 @@
<nav role="navigation" data-breakpoint="my-md" id="site-navbar">
<ul> <ul>
<h2>{{ SITESUBTITLE }}</h2> <h2>{{ SITESUBTITLE }}</h2>
</ul> </ul>
<ul> <input type="checkbox" id="hamburger">
<label id="hamburger-label" for="hamburger" aria-label="Menu" aria-controls="main-menu-items">
&equiv;
</label>
<ul id="main-menu-items" role="list">
{% for title, link in MENUITEMS %} {% for title, link in MENUITEMS %}
{% if link == url %} {% if link == url %}
<li aria-current="page"> <li aria-current="page" role="listitem">
{% else %} {% else %}
<li> <li role="listitem">
{% endif %} {% endif %}
<a href="{{ link }}">{{ title }}</a> <a href="{{ link }}">{{ title }}</a>
</li> </li>
{% endfor %} {% endfor %}
<li> <li role="listitem">
<label> <label id="sun-moon-label">
<input id="sun-moon" name="color-mode-toggle" role="switch" type="checkbox" value="1" <input id="sun-moon" name="color-mode-toggle" role="switch" type="checkbox" value="1"
aria-label="Toggle Light or Dark Mode"> aria-label="Toggle Light or Dark Mode">
</label> </label>
</li> </li>
</ul> </ul>
</nav>