В Sass, как вы уже заметили, переменные имеют статический характер и не могут быть изменены во время выполнения приложения. Таким образом, для того чтобы изменить внешний вид вашего приложения в зависимости от темной или светлой темы, вам нужно использовать JavaScript или другой язык программирования на стороне клиента для управления состоянием темы и обновления стилей.
Вот простой способ реализации переключения между темным и светлым режимами при нажатии кнопки с использованием JavaScript:
1. **Стилизация с помощью Sass:** Создайте необходимые стили для светлого и темного режимов с помощью Sass. Например:
```scss
// styles.scss
$dark-mode: false;
@mixin theme($dark-mode) {
@if $dark-mode {
// Темная тема
$primary-color: #161625;
$text-color: #e1e1ff;
} @else {
// Светлая тема
$primary-color: #f9f9f9;
$text-color: #424242;
}
body {
background: $primary-color;
color: $text-color;
}
}
body {
@include theme($dark-mode);
}
```
2. **Используйте JavaScript для управления темой:** Создайте кнопку для переключения темы и обработчик события нажатия, чтобы изменить класс на элементе `body` или изменить CSS-переменные.
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css"> <!-- Скомпилированный файл CSS -->
<title>Переключение темы</title>
</head>
<body>
<button id="theme-toggle">Переключить тему</button>
<script>
const button = document.getElementById('theme-toggle');
let darkMode = false;
button.addEventListener('click', () => {
darkMode = !darkMode;
document.body.classList.toggle('dark-mode', darkMode);
});
</script>
</body>
</html>
```
3. **Добавьте стили для темного режима в CSS:** Скомпилируйте ваши Sass стили, чтобы включить классы для темного режима.
```css
/* styles.css */
body {
background: #f9f9f9;
color: #424242;
}
body.dark-mode {
background: #161625;
color: #e1e1ff;
}
```
Этот пример демонстрирует, как можно переключаться между светлой и темной темами с помощью JavaScript и Sass, при этом переменная `$dark-mode` остается статической в Sass, а состояние темы управляется на стороне клиента.