Build the page scaffolding with CSS grid

Grid columns are symmetrical. From the outside in, they are:

- outer margin
- inner margin
- wide gutter
- inner gutter
- main content
This commit is contained in:
Eryn Wells 2024-07-06 11:07:52 -07:00
parent 5dd0748e25
commit 3cbce149ba
5 changed files with 64 additions and 24 deletions

View file

@ -50,10 +50,6 @@ hr {
margin-block: var(--space-m);
}
main {
margin-block-end: var(--space-xl);
}
p + p {
margin-block-start: var(--space-paragraph);
}

View file

@ -12,18 +12,63 @@
************************/
:root {
--content-width: 40rem;
--content-width: 30rem;
--gutter-width: var(--space-m);
}
body {
display: grid;
gap: 0;
grid-template-columns:
[full-start]
1fr
[wide-start]
1fr
[wide-gutter-start wide-gutter-left-start]
var(--gutter-width)
[wide-gutter-left-end gutter-start gutter-left-start]
var(--gutter-width)
[gutter-left-end main-start]
minmax(auto, var(--content-width))
[main-end gutter-right-start]
var(--gutter-width)
[gutter-right-end gutter-end wide-gutter-right-start]
var(--gutter-width)
[wide-gutter-right-end wide-gutter-end]
1fr
[wide-end]
1fr
[full-end];
margin: 0;
}
main {
/* Center the content and ensure a minimum margin. The calculation in the
* second argument does what `auto` would do if it could be used in max(). */
margin-inline: max(var(--space-s), 50% - var(--content-width) / 2);
max-width: var(--content-width);
.body__container,
.site-header,
main
{
display: grid;
grid-template-columns: subgrid;
grid-column: full-start / full-end;
}
.body__container {
gap: var(--space-xl) 0;
}
.nav-breadcrumb,
.site-header__content,
.site-footer
{
grid-column: main-start / main-end;
}
{{- $wideElements := "figure, pre" -}}
.body__container > :not({{ $wideElements }}) {
grid-column: main-start / main-end;
}
.body__container > :is(figure, pre) {
grid-column: wide-gutter-start / wide-gutter-end;
}
figure, img {

View file

@ -21,6 +21,11 @@
.content-title {
margin-block: var(--space-xl) var(--space-l);
/* margin-block-start is handled by the grid */
&:first-child, &:first-child .title {
margin-block-start: 0;
}
.title:has(+ .subtitle) {
margin-block-end: var(--space-xs);
}

View file

@ -44,11 +44,3 @@
}
}
}
.site-header__container,
.site-footer__container {
/* Center the content and ensure a minimum margin. The calculation in the
* second argument does what `auto` would do if it could be used in max(). */
margin-inline: max(var(--space-m), 50% - var(--content-width) / 2);
max-width: var(--content-width);
}