CRAFTING UI
Frontend Design
Typografi, spacing of tekstindhold
Components
Design Patterns
Grid System
Design Tokens
Hierarki
Components
Design Patterns
Hierarki
Grid System
Design Tokens
"17 individual fixes"
#495dc5
100
200
300
400
500
600
700
800
100
200
300
400
500
600
700
800
200
500
800
Du vil typisk bruge unitless.
use this number multiplied by the element's font size
~ 1.5-1.6 til brødtekst
~ 1.1 til store overskrifter
~ 1.25-1.3 til mindre overskrifter
html {
line-height: 1.6;
}
h1,
h2 {
line-height: 1.1;
}
h3 {
line-height: 1.25;
}.element {
display: flex;
gap: 1.25ch;
align-items: center;
}Overskrift
Morbi tortor mi, semper id magna quis, auctor auctor purus. Nam pellentesque vulputate lectus, et euismod est tincidunt sed.
Overskrift
Overskrift
Overskrift
giraf
h1 {
text-box-trim: trim-both;
text-box-edge: cap alphabetic;
}h1 {
/*text-box-trim: trim-both;
text-box-edge: cap alphabetic;*/
text-box: cap alphabetic;
}Tilføj spacing til kortet
Tilføj spacing til kortet
.flow {
> * + * {
margin-block-start: var(--flow-space, 1rlh); /* margin-top */
}
h2 {
--flow-space: 2rlh;
}
}Flow-space:
spacing som system
Lav øvelsen, der ligger på git-branch'en "flow-space" på GitHub
Øvelse
.flow {
> * + * {
margin-top: var(--flow-space, 1rlh);
}
h2 {
--flow-space: 2rlh;
}
}Neutrals
Neutrals
Neutrals
:root {
--color-text-strong: oklch(0.18 0 0);
--color-text: oklch(0.26 0 0);
--color-text-muted: oklch(0.48 0 0);
--color-text-accent: oklch(0.54 0.22 143.88);
--color-bg: oklch(0.99 0 0);
--color-bg-surface1: oklch(0.97 0 0);
--color-bg-surface2: oklch(0.94 0 0);
--color-border: oklch(0.3 0 0 / 12%);
}Units
article {
padding: 2rlh;
gap: 1rlh;
}Fluid type
Fluid spacing
Flydende størrelser med progress()
... returnerer et tal mellem 0 og 1, der repræsenterer en værdis progression fra en startværdi til en slutværdi.
progress(5, 0, 10) /* 0.5 */--min-size
--max-size
--min-range
--max-range
1rem
3rem
400px
1000px
--min-size:
--max-size:
--min-range:
--max-range:
containerbredden
--min-size
--max-size
--min-range
--max-range
var(
)
var(
)
,
,
100cqw
containerbredden
returnerer 0-1 i intervallet 400px til 1000px
--min-range
--max-range
var(
)
var(
)
,
,
100cqw
progress(
)
returnerer 0-1 i intervallet 400px til 1000px
--min-range
--max-range
var(
)
var(
)
,
,
100cqw
progress(
)
--min-range
--max-range
var(
)
var(
)
,
,
100cqw
progress(
)
--p:
1rem
3rem
3rem
--min-range
--max-range
var(
)
var(
)
,
,
100cqw
progress(
)
--p:
1rem
--min-range
--max-range
var(
)
var(
)
,
,
100cqw
progress(
)
--p:
3rem
var(--p) *
calc(
)
= 0rem-3rem
1rem
--min-range
--max-range
var(
)
var(
)
,
,
100cqw
progress(
)
--p:
2rem
var(--p) *
calc(
)
+
1rem
= 1rem-3rem
(
--min-range
--max-range
var(
)
var(
)
,
,
100cqw
progress(
)
--p:
3rem
var(--p) *
calc(
)
1rem
)
(
-
+
1rem
--min-range
--max-range
var(
)
var(
)
,
,
100cqw
progress(
)
--p:
var(--max-size)
var(--p) *
calc(
)
var(--min-size)
)
(
-
+
var(--min-size)
font-size:
article {
--p: progress(100vw, 400px, 1000px);
h2 {
--min-size: 1rem;
--max-size: 3rem;
font-size: calc(var(--p) * (var(--max-size) - var(--min-size)) + var(--min-size));
}
}Øvelse
Lav øvelsen, der ligger på git-branch'en "text-styling" på GitHub
Øvelse
Diskuter og identificer mulige forbedringer til dette card UI sammen med din sidemakker.
Lav derefter øvelsen, der ligger på git-branch'en "card-ui" på GitHub
h1,
h2,
h3 {
text-wrap: balance;
}
p {
text-wrap: pretty;
}p:first-letter {
initial-letter: 3;
}