Skip to content

Commit 6fb8785

Browse files
committed
WIP: Offer a dark mode if indicated by the operating system
Many operating systems let users choose between light and dark themes directly in the system settings. Web browsers can react to that via a @media query, which we do here. This commit draws heavily on the excellent guidance provided in https://css-tricks.com/a-complete-guide-to-dark-mode-on-the-web/ as well as on SASS' `@mixin` feature (for more details, see https://sass-lang.com/documentation/at-rules/mixin/). Signed-off-by: Johannes Schindelin <[email protected]>
1 parent 6a5a5ef commit 6fb8785

File tree

3 files changed

+59
-36
lines changed

3 files changed

+59
-36
lines changed

assets/sass/application.scss

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ $baseurl: "{{ .Site.BaseURL }}{{ if (and (ne .Site.BaseURL "/") (ne .Site.BaseUR
2626
@import 'book';
2727
@import 'book2';
2828
@import 'lists';
29+
@import 'dark-mode';
2930

3031
code {
3132
display: inline;
@@ -48,28 +49,4 @@ pre {
4849

4950
.d-flex{
5051
display: flex;
51-
}
52-
53-
html {
54-
--orange: #{$orange};
55-
--orange-darker-5: #{darken($orange, 5%)};
56-
--blue: #{$blue};
57-
--font-color: #{$font-color};
58-
--font-color-lighter-20: #{lighten($font-color, 20%)};
59-
--light-font-color: #{$light-font-color};
60-
--light-font-color-darker-10: #{darken($light-font-color, 10%)};
61-
--light-font-color-darker-25: #{darken($light-font-color, 25%)};
62-
--light-font-color-darker-35: #{darken($light-font-color, 35%)};
63-
--light-font-color-darker-55: #{darken($light-font-color, 55%)};
64-
--light-font-color-lighter-20: #{lighten($light-font-color, 20%)};
65-
--link-color: #{$link-color};
66-
--link-hover-color: #{lighten($link-color, 10%)};
67-
--fixed-width-font-color: #{$fixed-width-font-color};
68-
--base-border-color: #{$base-border-color};
69-
--base-border-color-darker-8: #{darken($base-border-color, 8%)};
70-
--base-border-color-lighter-10: #{lighten($base-border-color, 10%)};
71-
--callout-color: #{$callout-color};
72-
73-
--black-3: #{$black-3};
74-
--main-bg: #{$main-bg};
7552
}

assets/sass/dark-mode.css

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
@mixin mode($mode: light, $class: "") {
2+
// Palette
3+
$orange: #f14e32;
4+
$blue: #009099;
5+
$font-color: #4e443c;
6+
$light-font-color: #9a9994;
7+
$link-color: #0388a6;
8+
$fixed-width-font-color: #4e443c;
9+
$base-border-color: #d8d7cf;
10+
$callout-color: #e9e8e0;
11+
$black-3: #333333;
12+
$main-bg: #fcfcfa;
13+
14+
@if $mode == dark {
15+
$orange: #d1432a;
16+
$blue: #007a7e;
17+
$font-color: #efefefbf;
18+
$light-font-color: #7a7972;
19+
$link-color: #579cab;
20+
$fixed-width-font-color: #3c3632;
21+
$base-border-color: #b3b2a7;
22+
$callout-color: #000000;
23+
$black-3: #cccccc;
24+
$main-bg: #000000;
25+
}
26+
27+
body#{$class} {
28+
--orange: #{$orange};
29+
--orange-darker-5: #{darken($orange, 5%)};
30+
--blue: #{$blue};
31+
--font-color: #{$font-color};
32+
--font-color-lighter-20: #{lighten($font-color, 20%)};
33+
--light-font-color: #{$light-font-color};
34+
--light-font-color-darker-10: #{darken($light-font-color, 10%)};
35+
--light-font-color-darker-25: #{darken($light-font-color, 25%)};
36+
--light-font-color-darker-35: #{darken($light-font-color, 35%)};
37+
--light-font-color-darker-55: #{darken($light-font-color, 55%)};
38+
--light-font-color-lighter-20: #{lighten($light-font-color, 20%)};
39+
--link-color: #{$link-color};
40+
--link-hover-color: #{lighten($link-color, 10%)};
41+
--fixed-width-font-color: #{$fixed-width-font-color};
42+
--base-border-color: #{$base-border-color};
43+
--base-border-color-darker-8: #{darken($base-border-color, 8%)};
44+
--base-border-color-lighter-10: #{lighten($base-border-color, 10%)};
45+
--callout-color: #{$callout-color};
46+
47+
--black-3: #{$black-3};
48+
--main-bg: #{$main-bg};
49+
}
50+
}
51+
52+
@include mode
53+
@include mode($mode: dark, $class: ".dark-mode")
54+
55+
@media screen and (prefers-color-scheme: dark) {
56+
@include mode($mode: dark)
57+
@include mode($mode: light, $class: ".light-mode")
58+
}

assets/sass/variables.scss

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,3 @@
1-
// Palette
2-
$orange: #f14e32;
3-
$blue: #009099;
4-
$font-color: #4e443c;
5-
$light-font-color: #9a9994;
6-
$link-color: #0388a6;
7-
$fixed-width-font-color: #4e443c;
8-
$base-border-color: #d8d7cf;
9-
$callout-color: #e9e8e0;
10-
$black-3: #333333;
11-
$main-bg: #fcfcfa;
12-
131
// breakpoints
142
$mobile-xs: 480px;
153
$mobile-s: 576px;

0 commit comments

Comments
 (0)