Сообщения без ответов | Активные темы Текущее время: 08 сен 2026, 09:04



Ответить на тему  [ Сообщений: 8 ] 
Темная тема оформления, прошу помощи с js 
Автор Сообщение

Зарегистрирован: 16 янв 2011, 14:59
Сообщения: 367

Добрый день, друзья!

Решил попытаться сделать своими силами переключение темной темы на сайте.
Делал с помощью js и css.
В виде переключателя решил использовать чекбокс.
В js не соображаю, по этому гуглил готовый код.

CSS
Код:
Для просмотра Вы должны быть в группе пользователей Elite-Board.


HTML
Код:
Для просмотра Вы должны быть в группе пользователей Elite-Board.


JS
Код:
Для просмотра Вы должны быть в группе пользователей Elite-Board.


Беда в том, что стиль переключается.
Состояние чекбокса при перезагрузке страницы сохраняется, а вот выбранное черное оформление [dark] - нет.
Гуглить пробовал, но либо не то что мне нужно, либо сильно сложно.
Прошу вашей помощи.


20 ноя 2022, 13:05
Профиль

Зарегистрирован: 24 сен 2020, 21:25
Сообщения: 337

Привет

Я бы сделал вот так:
Код:
Для просмотра Вы должны быть в группе пользователей Elite-Board.



Код:
Для просмотра Вы должны быть в группе пользователей Elite-Board.


21 ноя 2022, 00:17
Профиль

Зарегистрирован: 16 янв 2011, 14:59
Сообщения: 367

Вчера пока ждал помощи - сидел пробовал варианты и один сработал :-).
Код:
Для просмотра Вы должны быть в группе пользователей Elite-Board.

В принципе тоже что ты предложил. А вот все остальное у тебя по симпатичнее смотрится нежели у меня). Поставил твой - все работает. Спасибо, низкий поклон ;-)!

Теперь решаю вопрос со сменой логотипа на черную версию. Лого у меня svg, вставлен через тег <img>. Мог бы сделать через background-image, а потом менять в css. Но хочется сохранить тег <img>, как никак логотип :-).


До смены кода на твой было так:
Код:
Для просмотра Вы должны быть в группе пользователей Elite-Board.


Переключение лого работает, но опять же не сохраняется, а в localStorage.getItem не знаю что прописать, пробовал разные варианты методом сопоставления и подбора, но не вышло. И как мне подсказывает внутреннее чутье - способ "костыль". Путь до лого повторяется не один раз. Копаю дальше.
Еще раз спасибо!


21 ноя 2022, 18:19
Профиль

Зарегистрирован: 24 сен 2020, 21:25
Сообщения: 337

Anton писал(а):
Переключение лого работает, но опять же не сохраняется, а в localStorage.getItem не знаю что прописать, пробовал разные варианты методом сопоставления и подбора, но не вышло. И как мне подсказывает внутреннее чутье - способ "костыль". Путь до лого повторяется не один раз. Копаю дальше.
Еще раз спасибо!


Во-первых:
У 2-х разных элементов, на 1 странице не нужно делать одинаковые ID, Я про switch-color, который и на чекбоксе и на логотипе.
Смени ID логотипа например на site-logo.
Код:
Для просмотра Вы должны быть в группе пользователей Elite-Board.

И юзай вот так:
Код:
Для просмотра Вы должны быть в группе пользователей Elite-Board.


21 ноя 2022, 19:51
Профиль

Зарегистрирован: 16 янв 2011, 14:59
Сообщения: 367

Попробовал поюзать, все отвалилось, стили не переключаются и лого тоже, положение чекбокса не сохраняется (


22 ноя 2022, 10:57
Профиль

Зарегистрирован: 16 янв 2011, 14:59
Сообщения: 367

upd.
Преблема была в том, что я решил скрипт вставить выше разметки чекбокса и логотипа. до этого скрипт был прописан сразу после чекбокса, для того, чтобы при перезагрузке страницы энейбл чекбокса сразу подгрузился.
Сейчас скрипт прописан в футере, и при перезагрузке страницы, если выбрана черная тема, чекбокс на мгновение дисэйбл, а когда браузер считает всю страницу - энейбл. Очень бросается в глаза. А так скрипт коротеньки и решает все задачи. Иван, браво!


22 ноя 2022, 12:32
Профиль

Зарегистрирован: 24 сен 2020, 21:25
Сообщения: 337

Anton писал(а):
upd.
Преблема была в том, что я решил скрипт вставить выше разметки чекбокса и логотипа. до этого скрипт был прописан сразу после чекбокса, для того, чтобы при перезагрузке страницы энейбл чекбокса сразу подгрузился.
Сейчас скрипт прописан в футере, и при перезагрузке страницы, если выбрана черная тема, чекбокс на мгновение дисэйбл, а когда браузер считает всю страницу - энейбл. Очень бросается в глаза. А так скрипт коротеньки и решает все задачи. Иван, браво!


Самый простой вариант избавиться от "дерганий", и чекбокса и цветов, пиши данные не в local storage а в куки.
И считывай куки через smarty


22 ноя 2022, 13:15
Профиль

Зарегистрирован: 16 янв 2011, 14:59
Сообщения: 367

Печенье оказалось мне не по зубам)))

Пока решил остановиться на том, что браузер автоматически выбирает тему в зависимости от системной. Лого вывел через задник в CSS.
Вот такое решение.
Код:
Для просмотра Вы должны быть в группе пользователей Elite-Board.


25 ноя 2022, 18:58
Профиль
Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 8 ] 

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron