Как реализовать на сайте динамический css?

Разрабатываю тему WP и в будущем хотел бы реализовать возможность в админке редактировать цвета текста, блоков и прочее.

Как это можно реализовать? Я так полагаю это должно наверно быть так, что цвета задаются в виде переменных.
  • Вопрос задан
  • 582 просмотра
Решения вопроса 1
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега CSS
Руководитель frontend направления, предприниматель
1. CSS переменные (сразу смотри поддержку браузерами).
2. Выводить данные в теге <style> на этапе генерации страницы (частый метод в WP темах):
<head>
    ...
    <style>
        .classname {
            color: <?= $settings['classname_color']; ?>;
        }

Ничего сложного, на WP все формируется внутри PHP файлов, которые так могут из коробки, главное занести переменную в вид из конфигу (как и любую другую для вывода, собсно).
3. Генерировать CSS-файл, который будет подключен в тело.
4. При выводе генерировать инлайновые стили в тегах (о ужес, но так можно).
5. Передавать в JS, которым генерировать динамические стили. Принцип описан в документации JS. Вопрос только в том, как туда данные попадут, это может быть, скажем метод а-ля API, чтобы за-fetch-ить JSON или занос в переменную прямо в тело:
<script>
    var data = <?= json_encode($settings); ?>
    document.querySelector('.classname').style.color = data.classname_color;


Конечно, под все методы, кроме первого, у тебя должны быть согласованы с бэком отправители, так и адресаты изменений, фолбэки и т.д.

6. Если бы не WP с его условно-законченным видом, то можно компилить на уровне бэкенда сырцы типа Sass, передавая в него данные из базы с помощью сборки (я думаю это можно и под WP накрутить, но я лично не пробовал).

ЗЫ: Градация от первого до пятого → в порядке абсурдности, чем выше, тем адекватнее. 6 уже особняком идет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
dimovich85
@dimovich85 Куратор тега CSS
https://u-academy.net/
Да, и например можно через php открыть и переписать файл css физически, а можно еще проще - вывести переменные в шаблоне через тег style, или в качестве атрибута style.
Ответ написан
Комментировать
@Lord_Dantes
Я бы сделал следующим образом.
Через плагин ACF вывел бы в админку на нужную страницу поля которые нужно редактировать. Потом эти значения вставлял бы на сайт.
Ответ написан
Комментировать
@adequm
В чистом css можно создавать переменные:
(внутри файла style.css)
:root {
--color: #eee;
-fontSize: 14px;
}

После используй эти переменные в любом месте
body {
backgroud-color: var(--color);
font-size: var(--fontSize);
}

Ты можешь в любой момент спокойно вставить в html тег

=> автоматически сменятся стили использующие твои переменные. Так, к примеру, можно легко переключать тему (дневная/ночная) сайта лишь изменив тег
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы