Цветовые темы на сайте

от автора

Что будем делать

Систему позволяющую создавать разные цветовые темы на сайте.

Зачем

Многие сайты сейчас имеют разные цветовые темы для удобства использования при разном освещение(обычно).

Что нам понадобится

  • Знание HTML

  • Знание CSS

  • Знание JS

Начнем

Создадим разметку нашего сайта. Пока все слишком сыро, но это пока.

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Темы на сайте</title> </head> <body>     <div class="text">         Themes sait     </div> </body> </html>

Создадим и подключим CSS файл со следующим кодом.

html, body {     margin: 0;     padding: 0; }  .text {     position: fixed;     font-size: 100px;     width: 100%;     height: 100%;     justify-content: center;     align-items: center;     display: flex; }

Далее создадим black.css.

:root {     --textColor: white;     --background: black; }

И создадим white.css.

:root {     --textColor: black;     --background: white; }

А теперь подробнее

Что же такое «:root»? И что это за параметры?

«:root» — Это псевдокласс применяемый к корневому элементу на сайте, обычно это <html></html>.

Параметры — Это переменные работающие только в указанном элементе, в нашем случаи это «root». Чтобы назначить переменную перед ее названием надо поставить два тире(«—«). Чтобы считать переменную используйте var(—Название_переменной).

Продолжим

Давайте добавим значения из переменных в наш основной код.

html, body {     margin: 0;     padding: 0;     background: var(--background); }  .text {     color: var(--textColor);     position: fixed;     font-size: 100px;     width: 100%;     height: 100%;     justify-content: center;     align-items: center;     display: flex; }

Если сейчас мы запустим сайт, то ничего не поменяется. Что бы все работало нам надо подключить CSS файлы. Но подключать надо не случайный файл, а один, какой-то определенный, и как же понять, что надо пользователю? Для этого я предлагаю использовать GET параметры(Все параметры переданные в URL после знака вопроса(«https://domain.com?var=1»)). По умолчанию будет «темная тема», а по нужде пользователя — «белая». Что бы использовать «белую тему» понадобится передать параметр «white» с любым значением(«https://domain.com?white=true»).

Создадим JS скрипт и подключим его.

function $_GET(key) {     let p = window.location.search;     p = p.match(new RegExp(key + "=([^&=]+)"));     return p ? Boolean(p[1]) : false; }  function color() {     let head  = document.getElementsByTagName("head")[0];     let link  = document.createElement("link");     link.id   = "css";     link.rel  = "stylesheet";     link.type = "text/css";     link.media = "all";     if($_GET("white")) {         link.href = "./white.css";     } else {         link.href = "./black.css";             }     head.appendChild(link); }

Осталось в конце кода страницы вызвать метод «color».

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Темы на сайте</title>     <link rel="stylesheet" href="style.css">     <script src="index.js"></script> </head> <body>     <div class="text">         Themes sait     </div> </body> <script>color()</script> </html>

Заключение

Вот так легко и быстро можно создать сайт с двумя темами, но ведь на двух темах можно не останавливать и сделать больше. Все спасибо за внимание.

Проект на gitHub.

ссылка на оригинал статьи https://habr.com/ru/post/526164/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *