Skip to content

Commit 4e66ed8

Browse files
committed
feat: animate mobile menu toggle
1 parent e02a533 commit 4e66ed8

2 files changed

Lines changed: 38 additions & 3 deletions

File tree

src/styles/layout.css

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,23 +124,34 @@
124124
}
125125

126126
.mobile-menu summary {
127+
position: relative;
127128
list-style: none;
128129
}
129130

130131
.mobile-menu summary::-webkit-details-marker {
131132
display: none;
132133
}
133134

135+
.mobile-menu summary svg {
136+
grid-area: 1 / 1;
137+
transition:
138+
opacity 140ms ease,
139+
transform 160ms ease;
140+
}
141+
134142
.mobile-menu-close {
135-
display: none;
143+
opacity: 0;
144+
transform: scale(0.82) rotate(-45deg);
136145
}
137146

138147
.mobile-menu[open] .mobile-menu-open {
139-
display: none;
148+
opacity: 0;
149+
transform: scale(0.82) rotate(45deg);
140150
}
141151

142152
.mobile-menu[open] .mobile-menu-close {
143-
display: block;
153+
opacity: 1;
154+
transform: scale(1) rotate(0);
144155
}
145156

146157
.mobile-menu nav {
@@ -156,6 +167,8 @@
156167
box-shadow: var(--shadow);
157168
backdrop-filter: blur(14px);
158169
padding: 8px;
170+
transform-origin: top center;
171+
animation: mobile-menu-enter 170ms ease-out;
159172
}
160173

161174
.mobile-menu nav a {
@@ -168,6 +181,18 @@
168181
font-weight: 800;
169182
}
170183

184+
@keyframes mobile-menu-enter {
185+
0% {
186+
opacity: 0;
187+
transform: translateY(-6px) scaleY(0.98);
188+
}
189+
190+
100% {
191+
opacity: 1;
192+
transform: translateY(0) scaleY(1);
193+
}
194+
}
195+
171196
.theme-toggle-sun {
172197
display: none;
173198
}

src/styles/responsive.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,16 @@
121121
min-height: 40px;
122122
}
123123

124+
@media (prefers-reduced-motion: reduce) {
125+
.mobile-menu nav {
126+
animation: none;
127+
}
128+
129+
.mobile-menu summary svg {
130+
transition: none;
131+
}
132+
}
133+
124134
.site-header nav a,
125135
.button {
126136
padding-right: 10px;

0 commit comments

Comments
 (0)