picocss/scss/components/_nav-hamburger.scss

91 lines
2.6 KiB
SCSS
Raw Normal View History

2024-12-31 05:18:39 +00:00
@use "sass:string";
@use "sass:map";
@use "sass:math";
@use "../settings" as *;
@if map.get($modules, "components/nav") {
/**
* Nav hamburger menu
* modified from https: //codepen.io/brentarias/pen/gOQybod
*/
#{$parent-selector} nav[role="navigation"] {
z-index: 1;
align-items: center;
width: 100%;
overflow: visible;
2024-12-31 05:18:39 +00:00
&[data-position="start"] {
/* remove the 'flex-direction' to move menu to the right */
flex-direction: row-reverse;
}
> input[type="checkbox"] {
display: none;
user-select: none;
}
> label {
display: none;
cursor: pointer;
user-select: none;
}
}
@each $breakpoint, $values in $breakpoints {
$databp: 'nav[role="navigation"]';
@if $breakpoint != sm {
$databp: #{$databp} + "[data-breakpoint='" + $breakpoint + "']";
}
$viewport: map.get($values, "viewport");
@media (max-width: $viewport) {
#{$parent-selector} #{$databp} {
flex-wrap: wrap;
overflow: hidden;
&:has(input[type="checkbox"]:checked) {
overflow: visible;
}
label {
2024-12-31 05:18:39 +00:00
display: block;
}
> [role="list"] {
2024-12-31 05:18:39 +00:00
flex-direction: column;
align-items: flex-start;
width: 90vw;
max-height: 0;
margin: 0 auto;
background-color: var(#{$css-var-prefix}muted-border-color); //muted-border-color);
box-shadow: var(#{$css-var-prefix}box-shadow);
transition: max-height var(#{$css-var-prefix}transition);
li {
width: calc(100% - calc(var(#{$css-var-prefix}nav-link-spacing-vertical) * 2));
margin: calc(var(#{$css-var-prefix}nav-link-spacing-vertical) * 0.5)
var(#{$css-var-prefix}nav-link-spacing-vertical);
2024-12-31 05:18:39 +00:00
padding: 0;
}
a {
2024-12-31 05:18:39 +00:00
display: block;
margin: 0;
border-bottom: 1px solid transparent;
border-radius: 0;
transition:
border-color var(#{$css-var-prefix}transition),
color var(#{$css-var-prefix}transition);
2024-12-31 05:18:39 +00:00
}
a:hover {
border-bottom-color: var(#{$css-var-prefix}underline);
2024-12-31 05:18:39 +00:00
text-decoration: none;
//background-color: var(#{$css-var-prefix}primary-background) !important;
//color: var(#{$css-var-prefix}primary-inverse);
2024-12-31 05:18:39 +00:00
}
}
input[type="checkbox"]:checked ~ [role="list"] {
2024-12-31 05:18:39 +00:00
max-height: 100vh;
}
}
}
}
}