lectures.alex.balgavy.eu

Lecture notes from university.
git clone git://git.alex.balgavy.eu/lectures.alex.balgavy.eu.git
Log | Files | Refs | Submodules

commit 0e101908579549d49ff777234e2329b40de3e412
parent d1058f669d55bb4f948b01845d776f6cc0b1954f
Author: Alex Balgavy <alex@balgavy.eu>
Date:   Wed, 27 Jan 2021 10:15:07 +0100

Make use of CSS prefers-color-scheme

With fallbacks for unsupported browsers & disabled JS.

Diffstat:
Mtemplates/base.html | 28+++++++++++++++++-----------
1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/templates/base.html b/templates/base.html @@ -4,17 +4,23 @@ <title>{% block title %}{% endblock title %}</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <script type="text/javascript"> - var hour = new Date().getHours(); - var css = document.createElement("link"); - css.setAttribute("rel", "stylesheet"); - css.setAttribute("href", (hour >= 18 || hour < 7) ? "/dark.css" : "/light.css"); - document.head.appendChild(css); - </script> - {% block scripts %}{% endblock scripts %} - <noscript> - <link rel="stylesheet" href="/light.css"> - </noscript> + <!-- For browsers without prefers-color-scheme, change theme based on time of day --> + <script type="text/javascript"> + if (window.matchMedia('(prefers-color-scheme: dark)').media === 'not all') { + document.documentElement.style.display = 'none'; + var hour = new Date().getHours(); + var sheet = (hour >= 18 || hour < 7) ? "/dark.css" : "/light.css"; + document.head.insertAdjacentHTML( + 'beforeend', + '<link rel="stylesheet" type="text/css" href="'+sheet+'" onload="document.documentElement.style.display = \'\'">' + ); + } + </script> + <!-- For browsers without JS, load the light theme --> + <noscript><link rel="stylesheet" type="text/css" href="/light.css"></noscript> + <!-- For browsers supporting prefers-color-scheme, use that --> + <link rel="stylesheet" type="text/css" href="/dark.css" media="(prefers-color-scheme: dark)"> + <link rel="stylesheet" type="text/css" href="/light.css" media="(prefers-color-scheme: light)"> </head> <body> {% if config.extra.debug %}