У меня есть простой сайт и на нём я хочу предоставить юзерам возможность менять темы оформления, к примеру есть три файла:
light.css
dark.css
yellow.css
Все три файла имеют разные стили, которые меняют оформление сайта. Создаю список:
<ul>
<li><a>Светлый стиль</a></li>
<li><a>Тёмный стиль</a></li>
<li><a>Жёлтый стиль</a></li>
</ul>
Помогите, пожалуйста, реализовать путём клика на ссылки смену дизайна, при этом чтобы выбор сохранялся при перезагрузке страницы и при переходе на другие. Как данный функционал возможно реализовать?
Данное решение написано на jQuery, с использованием localStorage
Для начала сделаем вёрстку в качестве меню
<!-- это в head -->
<link id="style" href="" rel="stylesheet">
<!-- это в удобное местое -->
<ul id="changeColor">
<li data-style="light">Светлый</li>
<li data-style="dark">Тёмный</li>
<li data-style="knight">Рыцарь</li>
</ul>
Атрибут data-style
должен быть уникален и совпадать с названием .css
файла.
Это не обязательно, конечно, но так скрипт будет короче :)
Далее переходим к сценарию, тут ориентируйтесь по комментариям
// Изменение цвета и сохранение
$('#changeColor').on('click', 'li', function(){
let style = $(this).data('style'); // Получим в переменную значение выбранного стиля
ChangeStyle(style); // Выполняем функцию
});
// "загрузка" цвета
$(document).ready(function(){
let loadStyle = localStorage.getItem('changeColor'); // Получим значение из localStorage
if(loadStyle) ChangeStyle(loadStyle); // выполним функцию, если в localStorage что-то есть
});
// Функция для сохранения стиля
function ChangeStyle(style) {
localStorage.setItem('changeColor', style); // сохраняем значение в localStorage
$('#style').attr('href', '/'+style+'.css'); // меняем стили
}
Создаем кнопки в html
<input value="Светлая" onclick="light()" type="button">
<input value="Темная" onclick="dark()" type="button">
<input value="Рыцарь" onclick="knight()" type="button">
Потом в html файле в котором у тебя эти кнопки должен быть подключен css
файл например со светлой темой. Создай js
файл и подключи его к файлу где ты создал кнопки и где у тебя подключена светлая тема. К тегу которым ты подключал css
добавляешь id
<link rel="stylesheet" href="light.css" id="theme">
В js пишешь:
var css
css = document.getElementById("theme");
function light(){
css.href = "light.css";
}
function dark(){
css.href = "dark.css";
}
function knight(){
css.href = "knight.css";
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Телеграмм бот на NodeJS + telegrafJS деплоится на heroku, бот работает корректно, но спустя неопределенное количество времени - падает и требует перезагрузки...
В mounted устанавливаю значение abilitiesНа странице должны выводится данные из этого свойства, но ничего не выводится
У меня есть форма регистрации, она не использует html тэг form, а работает исключительно на ajax запросахМне нужно сделать подсказки с выводом ошибок...