Show HN: A Dark Mode Toggle Without JavaScript (tymekdev.github.io)
Today I scratched my itch of implementing a dark mode toggle without JacaScript. The implementations I saw typically revolved about adding a 'dark' class to body via JS and then controlling it with JS handlers.
Thanks to `:has()` selector [0], that passed 90% browser compatibility [1], it is possible to avoid JS.
My implementation uses CSS variables combined with a checkbox, `:checked`, and `:has()`. It is simple, yet supports color scheme preference and updates toggle's label based on active mode.
5 comments
[ 276 ms ] story [ 642 ms ] threadI thought this might use indeterminate checkbox, but that wouldn't be necessary. 'Light', 'dark', and lack of thereof in localStorage already amount to three distinct states.
In fact, I am using it right now, and the example works without issues.