Это не будет работать с переменными Sass во время выполнения, так как они компилируются, а затем статически обслуживаются. Однако вы можете использовать CSS пользовательские свойства или CSS переменные. Их можно изменить во время выполнения с помощью Javascript (более универсально) или использовать медиазапросы вместе со значением логического контекста prefers-color-scheme
. К сожалению, это значение устанавливается браузерной средой пользователя и не может быть изменено с помощью Javascript.
Однако вы можете просто переключать цвета с помощью Javascript. С событием onClick вы просто сохраняете состояние текущего цвета в буфере, назначаете текущий цвет альтернативному цвету, а затем устанавливаете альтернативный цвет на тот, который сохранен в буфере (он же прежний текущий цвет).
Я пытался переключаться между цветами, хранящимися в CSS пользовательских свойствах, с помощью флажка и селектора input: флажок, но изменения имеют только локальную область видимости (спасибо, W3 C), поэтому они не принесут вам никакой пользы - это, конечно, если вы не хотите обернуть весь ваш сайт в элемент переключателя цвета.
Единственный способ использования переменных Sass - это перекомпилировать таблицы стилей Sass, когда пользователь переключает цветовую схему.
tl; dr: используйте CSS пользовательских свойств и либо go с настройками браузера по умолчанию в медиа-запросах, либо используйте бит Javascript. Все остальное очень хакерское.