Я пытаюсь добавить на свой сайт Jekyll простой переключатель светлого / темного режима.
Сейчас я настроил его так: в теле есть класс dark
, который переключается на класс light
при переключении, а тема сохраняется в localStorage
и загружается всякий раз, когда пользователь переходит на новую страницу. В SCSS просто есть селекторы для .dark
и .light
, которые будут отображать соответствующую цветовую схему.
Проблема с этим подходом заключается в том, что моя тема по умолчанию - dark
, поэтому, если для темы задано значение light
, будет очень четкая 0,2-секундная вспышка, когда классы переключаются с dark
на light
, когда я загружаю новую страницу.
Я попытался решить эту проблему, установив visibilty
тела на hidden
, а затем снова сделав visible
после переключения, но, к сожалению, этот подход приводит к еще одной раздражающей вспышке / задержке, и нет хорошего способа остановить его мигание на каждой странице нагрузка.
Вот некоторые из возможных решений, о которых я подумал, но не знаю, возможны ли они и как их реализовать:
Пусть Jekyll каким-то образом прочитает
localStorage
и изменит класс визуализированного HTML на основе этого (возможно, лучшее решение, но также, вероятно, невозможно)Каким-то образом заставить Jekyll создать две отдельные таблицы стилей из SCSS и использовать JS для выбора правильной.
Буду признателен за любую информацию о том, как это сделать или возможные альтернативные решения, спасибо!