Skip to content

Commit 2ccd374

Browse files
authored
feat: Use lh units for typography margins (#66)
1 parent 602f7b8 commit 2ccd374

File tree

1 file changed

+41
-36
lines changed

1 file changed

+41
-36
lines changed

packages/nimiq-css/src/css/typography.css

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@
88
- h1: will have (3 * 24)px for desktop and (2.75 * 24)px for mobile
99
- p: will have (24)px for desktop and (2.75 * 24)px for mobile
1010
*/
11+
--nq-screen-width-min-lh: 20;
12+
--nq-screen-width-max-lh: 72;
13+
--f-screen-range-lh: calc(var(--nq-screen-width-max-lh) - var(--nq-screen-width-min-lh));
1114
--nq-screen-width-min-em: 20;
1215
--nq-screen-width-max-em: 72;
1316
--f-screen-range-em: calc(var(--nq-screen-width-max-em) - var(--nq-screen-width-min-em));
1417
--font-size-min-em: 1;
1518
--font-size-max-em: 1;
16-
--margin-min-em: 0;
17-
--margin-max-em: 0;
19+
--margin-min-lh: 0;
20+
--margin-max-lh: 0;
1821
}
1922

2023
/**
@@ -44,15 +47,17 @@
4447
}
4548

4649
* {
50+
--lh-unit: 1lh;
51+
--f-factor-margin: calc((100vw - (var(--lh-unit) * var(--nq-screen-width-min-lh))) / var(--f-screen-range-lh));
4752
--f-factor: calc((100vw - (var(--unit) * var(--nq-screen-width-min-em))) / var(--f-screen-range-em));
4853

4954
/* Margin calculation */
50-
--nq-m-range: calc(var(--margin-max-em) - var(--margin-min-em));
51-
--nq-m-fluid: calc(var(--unit) * var(--margin-min-em) + var(--nq-m-range) * var(--f-factor));
55+
--nq-m-range: calc(var(--margin-max-lh) - var(--margin-min-lh));
56+
--nq-m-fluid: calc(var(--lh-unit) * var(--margin-min-lh) + var(--nq-m-range) * var(--f-factor-margin));
5257
--nq-m-size: clamp(
53-
calc(var(--unit) * var(--margin-min-em)),
58+
calc(var(--lh-unit) * var(--margin-min-lh)),
5459
var(--nq-m-fluid),
55-
calc(var(--margin-max-em) * var(--unit))
60+
calc(var(--margin-max-lh) * var(--lh-unit))
5661
);
5762

5863
/* derived values */
@@ -90,8 +95,8 @@
9095
}
9196

9297
&:where(h1 + *:not(:where(h1, h2, h3, h4))) {
93-
--margin-min-em: 7;
94-
--margin-max-em: 7.5;
98+
--margin-min-lh: 4.6667;
99+
--margin-max-lh: 5.0;
95100
margin-top: var(--nq-m-size);
96101
}
97102

@@ -103,12 +108,12 @@
103108

104109
margin-top: var(--nq-m-size);
105110
margin-bottom: 24px;
106-
--margin-min-em: 5.5;
107-
--margin-max-em: 6;
111+
--margin-min-lh: 4.2308;
112+
--margin-max-lh: 4.6154;
108113

109114
&:where(h1 + h2) {
110-
--margin-min-em: 2.5;
111-
--margin-max-em: 3;
115+
--margin-min-lh: 1.9231;
116+
--margin-max-lh: 2.3077;
112117
}
113118
}
114119

@@ -120,12 +125,12 @@
120125

121126
margin-bottom: 24px;
122127
margin-top: var(--nq-m-size);
123-
--margin-min-em: 5.5;
124-
--margin-max-em: 6;
128+
--margin-min-lh: 4.2308;
129+
--margin-max-lh: 4.6154;
125130

126131
&:where(h2 + h3) {
127-
--margin-min-em: 2;
128-
--margin-max-em: 2.25;
132+
--margin-min-lh: 1.5385;
133+
--margin-max-lh: 1.7308;
129134
}
130135
}
131136

@@ -137,13 +142,13 @@
137142

138143
margin-top: var(--nq-m-size);
139144
margin-bottom: 24px;
140-
--margin-min-em: 5.5;
141-
--margin-max-em: 6;
145+
--margin-min-lh: 4.2308;
146+
--margin-max-lh: 4.6154;
142147
}
143148

144149
&:where(h3 + h4) {
145-
--margin-min-em: 2;
146-
--margin-max-em: 2.25;
150+
--margin-min-lh: 1.5385;
151+
--margin-max-lh: 1.7308;
147152
}
148153

149154
/* Anchors in headings */
@@ -225,8 +230,8 @@
225230

226231
&:where(blockquote) {
227232
background: rgb(var(--nq-green-400));
228-
--margin-min-em: 0.875;
229-
--margin-max-em: 1;
233+
--margin-min-lh: 0.5833;
234+
--margin-max-lh: 0.6667;
230235
padding: var(--nq-m-size);
231236
border-radius: 6px;
232237
box-shadow: 0 0 0 1.5px rgb(var(--nq-green-600));
@@ -239,19 +244,19 @@
239244

240245
&:where(img, video, iframe) {
241246
border-radius: 6px;
242-
--margin-min-em: 1.125;
243-
--margin-max-em: 1.375;
247+
--margin-min-lh: 0.75;
248+
--margin-max-lh: 0.9167;
244249
margin-top: var(--nq-m-size);
245250

246251
&:has(+ figcaption) {
247-
--margin-min-em: 0.75;
248-
--margin-max-em: 1;
252+
--margin-min-lh: 0.5;
253+
--margin-max-lh: 0.6667;
249254
margin-bottom: var(--nq-m-size);
250255
}
251256

252257
&:not(:has(+ figcaption)) {
253-
--margin-min-em: 1.125;
254-
--margin-max-em: 1.375;
258+
--margin-min-lh: 0.75;
259+
--margin-max-lh: 0.9167;
255260
margin-bottom: var(--nq-m-size);
256261
}
257262
}
@@ -390,8 +395,8 @@
390395
width: 100%;
391396
--font-size-min-em: 0.75;
392397
--font-size-max-em: 0.875;
393-
--margin-min-em: 1.25;
394-
--margin-max-em: 1.5;
398+
--margin-min-lh: 0.8333;
399+
--margin-max-lh: 1.0;
395400
margin-top: var(--nq-m-size);
396401
margin-bottom: var(--nq-m-size);
397402
padding: 20px 24px;
@@ -426,8 +431,8 @@
426431
}
427432

428433
table {
429-
--margin-min-em: 1.5;
430-
--margin-max-em: 2;
434+
--margin-min-lh: 1.0;
435+
--margin-max-lh: 1.3333;
431436
margin-bottom: var(--nq-m-size);
432437
margin-top: var(--nq-m-size);
433438
display: block;
@@ -482,8 +487,8 @@
482487
}
483488

484489
hr {
485-
--margin-min-em: 1.25;
486-
--margin-max-em: 1.5;
490+
--margin-min-lh: 0.8333;
491+
--margin-max-lh: 1.0;
487492
margin: var(--nq-m-size) auto;
488493
width: 128px;
489494
border-color: rgb(var(--nq-neutral-500));
@@ -493,8 +498,8 @@
493498
/* TODO Animate open/closing https://developer.chrome.com/docs/css-ui/animate-to-height-auto#animate_the_details_element */
494499
border-radius: 6px;
495500
background-color: rgb(var(--nq-neutral-200));
496-
--margin-min-em: 1.125;
497-
--margin-max-em: 1.375;
501+
--margin-min-lh: 0.75;
502+
--margin-max-lh: 0.9167;
498503
margin-top: var(--nq-m-size);
499504
margin-bottom: var(--nq-m-size);
500505
color: rgb(var(--nq-neutral-900));

0 commit comments

Comments
 (0)