smdm-slide-menu
Version:
A library agnostic multilevel page menu with a smooth slide effect based on CSS transitions, focused on accessibility.
139 lines (114 loc) • 2.05 kB
CSS
:root {
--color-primary: #2e6da4;
--color-primary-dark: #1e4f7a;
--color-bg-page: #f5f5f5;
}
html {
font-size: 20px;
}
body {
font-family: Lato, sans-serif;
line-height: 1.4;
color: rgba(0, 0, 0, 0.87);
background-color: var(--color-bg-page);
}
h1 {
font-size: 1.8rem;
font-weight: 700;
}
h2 {
margin-top: 1.5rem;
margin-bottom: 1rem;
font-size: 1rem;
}
a {
text-decoration: none;
color: var(--color-primary);
}
.btn,
a {
transition: background-color 0.15s ease-in-out;
will-change: background-color;
}
p {
margin: 0 0 0.5rem;
}
p:last-of-type {
margin: 0 0 2rem;
}
footer {
margin-top: 2rem;
font-size: 90%;
}
footer a {
font-style: italic;
}
footer path {
fill: var(--color-primary);
}
.btn {
padding: 0.6rem 0.8rem 0.64rem;
border: none;
color: #fff;
cursor: pointer;
font-family: inherit;
font-size: 85%;
line-height: 1;
}
.icon {
height: 0.6rem;
margin: 0 0 0.1rem;
vertical-align: middle;
}
main {
display: block;
width: 90%;
margin: 2.5rem auto;
}
main .btn {
width: 100%;
display: block;
margin: 0 0.25rem 0.75rem 0;
background-color: var(--color-primary);
border-radius: 0.2rem;
font-size: 70%;
letter-spacing: 0.03em;
text-transform: uppercase;
}
@media (min-width: 768px) {
main {
max-width: 40rem;
}
main .btn {
width: auto;
display: inline-block;
}
main .btn:hover {
background-color: var(--color-primary-dark);
}
}
main #events {
font-family: monospace;
font-size: 80%;
}
/* Integration demo: host-project overrides for .slide-menu styling.
Note: do NOT set a fixed width here — let the library control width
via --smdm-sm-menu-width so fold layout works correctly. */
.slide-menu {
--smdm-sm-menu-width: 340px;
line-height: 1.4;
font-size: 0.8rem;
}
.slide-menu,
.slide-menu a {
color: #fff;
}
.slide-menu a {
text-decoration: none;
}
.slide-menu a:hover {
background-color: var(--smdm-sm-color-hover);
}
.slide-menu .slide-menu__backlink {
text-transform: uppercase;
}