Хорошо... Здесь нужно немного CSS?, но это было намного проще, чем ответы, которые я нашел в Интернете.
Чего я пытаюсь достичь?
С помощью этого метода я пытаюсь добиться двух целей.
Итак, у нас будет веб-сайт, который будет загружать тему, ожидаемую пользователем, а затем позволит им изменить ее, когда они захотят.
Шаг 1. Создайте кнопку для переключения
В качестве кнопки я использую изображение с изображением луны в формате SVG. Вы можете добавить кнопку или флажок, который позволит вам переключаться между двумя вариантами.
Шаг 2. Поместите информацию о цвете в CSS в качестве пользовательских свойств
:root{ color-scheme: light dark; --light-bg: ghostwhite; --light-color: darkslategray; --light-code: tomato; --dark-bg: darkslategray; --dark-color: ghostwhite; --dark-code: gold; } .light{ color-scheme: light; } .dark{ color-scheme: dark; }
Хорошо... Итак, в корне вы видите свойство, называемое цветовой схемой, и это изменит наши правила игры.
Как видите, он принимает значения светлый или темный. Я также создал два класса: .light и .dark, которые устанавливают значение цветовой схемы на темное или светлое.
Шаг 3. Добавьте цвета в различные части кода
body{ background-color: light-dark(var(--light-bg), var(--dark-bg)); }
Теперь всякий раз, когда свойство запрашивает цвет (например, фон, свойства цвета), вы можете использовать функцию под названием Light-Dark().
Эта функция принимает два значения: первое используется, когда цветовая схема установлена на светлую, а второе используется, когда цветовая схема установлена на темную.
Да... Эта функция выпущена в мае 2024 года. Она довольно новая, но скоро будет адаптирована. На момент написания этой статьи он находился в базовой поддержке. Вот документация для него
Если вы используете это, CSS автоматически определит предпочтения пользователя в ОС и установит для него нужный цвет.
Мы достигли нашей первой цели: веб-сайт будет загружаться в цветовом режиме, который пользователь уже хотел в своей ОС.
Шаг 4. Используйте Javascript для переключения между темным и светлым режимами
// mode is the toggle button mode.addEventListener("click", ()=>{ // we are getting the color scheme here let theme = document.documentElement.style.colorScheme; /* when a website is first loaded it will have null as its color-scheme value*/ if(theme == null){ // this window.matchMedia() checks if the user prefers the dark theme if(window.matchMedia("(prefers-color-scheme:dark)").matches){ /* if they prefer dark, clicking on our button should turn everything to light, the color-scheme will be given a value as light */ document.documentElement.style.colorScheme = "light"; } // Or else the color-scheme will be set to dark document.documentElement.style.colorScheme = "dark"; } /* Now since our toggle button set the color scheme, we can simply change light to dark and dark to light using below code */ else{ document.documentElement.style.colorScheme = (theme == "light")? "dark": "light"; } });
Здесь document.documentElement.style.colorScheme фактически ссылается на корневой элемент CSS.
Поскольку на предыдущем шаге мы уже смогли открыть веб-сайт в предпочитаемом пользователем режиме, здесь при нажатии кнопки переключения выполняются следующие действия.
*PS: * Это мой первый пост, и я все еще новичок в веб-разработке. Но когда я искал этот метод, я не видел соответствующих сообщений о нем. Если вы уже это знаете, извините, что натравил вас на клики? Я думал, что этот пост поможет мне помнить об этом процессе каждый раз, когда я работаю над новым проектом.
Если вы работаете над тем, чтобы ваш сайт работал в старых браузерах, этот метод определенно не для вас. Расскажите в комментариях об этом посте. Спасибо за прочтение.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3