Skip to content

Commit dfde9e9

Browse files
committed
Refactor topnav/sidebar to not use hardcoded heights.
- Topnav can have any height now and sidebar and <main> content's top spacing readjusts naturally. - position: fixed and hardcoded heights/margin/padding are removed.
1 parent 208723c commit dfde9e9

1 file changed

Lines changed: 18 additions & 25 deletions

File tree

src/css/sidebar.css

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,20 @@
11
@layer components {
22
[data-sidebar-layout] {
3-
--topnav-offset: 0px;
4-
53
display: grid;
64
grid-template-columns: 14rem 1fr;
7-
min-height: 100dvh;
8-
gap: var(--space-4);
5+
grid-template-rows: auto 1fr;
6+
height: 100dvh;
97

108
> main {
9+
grid-row: 2;
1110
min-width: 0;
12-
}
13-
14-
&:has(nav[data-topnav]) {
15-
--topnav-offset: var(--space-12);
16-
17-
> main [id] {
18-
scroll-margin-block-start: calc(var(--space-12) + var(--space-6));
19-
}
11+
overflow-y: auto;
2012
}
2113

2214
> aside[data-sidebar] {
23-
position: sticky;
24-
top: var(--topnav-offset);
15+
grid-row: 2;
16+
min-height: 0;
2517
z-index: 1;
26-
height: calc(100dvh - var(--topnav-offset));
27-
align-self: start;
2818
background-color: var(--background);
2919
border-inline-end: 1px solid var(--border);
3020
box-shadow: var(--shadow-medium);
@@ -96,13 +86,16 @@
9686
}
9787
}
9888
}
89+
90+
> nav[data-topnav] {
91+
grid-column: 1 / -1;
92+
}
9993
}
10094

10195
nav[data-topnav] {
102-
position: fixed;
103-
inset: 0 0 auto;
96+
position: sticky;
97+
top: 0;
10498
z-index: 5;
105-
min-height: var(--space-12);
10699
display: flex;
107100
align-items: center;
108101
gap: var(--space-3);
@@ -116,10 +109,6 @@
116109
}
117110
}
118111

119-
nav[data-topnav] ~ main {
120-
margin-block-start: var(--space-12);
121-
}
122-
123112
:is([data-sidebar-toggle], [data-sidebar-header]) {
124113
display: none;
125114
}
@@ -165,9 +154,13 @@
165154
[data-sidebar-layout] {
166155
grid-template-columns: 1fr;
167156

157+
> main {
158+
grid-column: 1;
159+
}
160+
168161
> aside[data-sidebar] {
169-
position: fixed;
170-
left: 0;
162+
grid-column: 1;
163+
z-index: 2;
171164
width: 16rem;
172165
transform: translateX(-100%);
173166
transition: transform var(--transition);

0 commit comments

Comments
 (0)