Layout: Responsive components
Blive bedre til CSS
Forstå, hvordan Nesting hjælper med organisering
Blive bedre til at bruge
Øvelser, øvelser og flere øvelser for at opbygge praktisk erfaring
Forstå, hvordan Subgrid hjælper med komplekse layouts
Anvende Container Queries for at lave responsive komponenter
Øvelser, øvelser og flere øvelser for at opbygge praktisk erfaring
Mål: Forstå, hvordan det hjælper med komplekse layouts
.grid {
align-items: last baseline;
grid-template-columns: subgrid;
}
Loading...
.container {
display: grid;
grid-template-columns:
1fr minmax(0, 1200px) 1fr;
column-gap: 1rem;
> * {
grid-column: 2;
}
.full-bleed {
grid-column: 1 / -1;
}
}
.container {
display: grid;
grid-template-columns:
[full-bleed-start] 1fr [main] minmax(0, 1200px) 1fr [full-bleed-end];
column-gap: 1rem;
> * {
grid-column: main;
}
.full-bleed {
grid-column: full-bleed;
}
}
.subgrid {
display: grid;
grid-template-rows:
[system-status] 3.5rem
[primary-nav] 3rem
[primary-header] 4rem
[main] auto
[footer] 4rem
[system-gestures] 2rem;
grid-template-columns:
[fullbleed-start] 1rem
[main-start] auto
[main-end] 1rem
[fullbleed-end];
}
nav {
grid-area: primary-nav / fullbleed;
display: grid;
grid-template-columns: subgrid;
}
nav > .content {
grid-area: main;
}
.cards {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 1rem;
}
øvelse
Lav øvelsen, der ligger på git-branch'en "subgrid-caption" på GitHub
Blive bedre til CSS
Forstå, hvordan Nesting hjælper med organisering
Blive bedre til at bruge
Øvelser, øvelser og flere øvelser for at opbygge praktisk erfaring
Mål: Lave responsive componenter
@media
Mål: Lave responsive componenter
@container
Mål: Lave responsive componenter
Container queries kan ikke lade sig gøre
?
?
Hvis containerens bredde er > 400px, så sæt containerens bredde til 300px
Hvis containerens bredde er 300px, så sæt containerens bredde til 600px
Løsningen? Containment
I praksis betyder det: en ekstra <div>
Løsningen? Containment
I praksis betyder det: en ekstra <div>
"På små skærme"
"På store skærme"
"Når der er lidt plads"
"Når der er meget plads"
@media (width > 900px) {...}
@container card (width > 400px) {...}
@container (width > 640px) {
.card {
flex-direction: column;
}
}
.card-wrapper {
container-type: inline-size;
}
@container (width > 640px) {
.card {
flex-direction: column;
}
}
Den ekstra div
@container (width > 75px) {
span {
background: #ff6663;
}
}
@container (width > 75px) {
span {
background: #ff6663;
}
}
span {
@container (width > 75px) {
background: #ff6663;
}
@container (width > 100px) {
background: #feb144;
}
...
}
container-type: inline-size;
@container (width > 400px) og
@container (width > 600px)
> 600px
< 600px
> 600px
< 600px
@container (width > 600px)
container-type: inline-size;
.card-wrapper {
container-type: inline-size;
container-name: main;
}
@container main (width > 640px) {
.card {
flex-direction: column;
}
}
.card-wrapper {
/* container-type: inline-size;
container-name: main; */
container: main / inline-size;
}
@container main (width > 640px) {
.card {
flex-direction: column;
}
}
> 600px
< 400px
main
.card-wrapper
.card-wrapper {
container: card / inline-size;
}
.card-wrapper {
container: card / inline-size;
}
.card {
font-size: clamp(1.45rem, 6cqw, 1.75rem);
}
6 % af bredden
h2 {
font-size: clamp(1.25rem, 5cqw, 2.5rem);
}
øvelse
Lav øvelsen, der ligger på git-branch'en "bento-grid" på GitHub
øvelse
Lav øvelsen, der ligger på git-branch'en "responsive-container" på GitHub