Поэтому я думаю, что заголовок является достаточным объяснением: я хотел бы динамически тематизировать все свое приложение. Возможно, это означает изменение цвета всех div, когда я нажимаю определенную кнопку, или изменение цвета всего веб-приложения, когда определенный пользователь входит в систему.
Чтобы дать некоторое представление о том, над чем я сейчас работаю, скажу, что я создал приложение Vue.js, которое использует множество библиотек, в том числе одну под названием Element-ui, в которой уже есть встроенная опция тематики. Проблема в том, что он написан в scss, и я хотел бы изменить все цвета переменных во время навигации. Мой проект выглядит примерно так:
<template>
... some HTML and components...
</template>
<script>
... some javascript ...
</script>
<style scoped>
... some style that is scoped to the current component only ...
</style>
У меня много файлов, подобных этому, поэтому создание «глобальной функции» для всех из них не представляется мне практичным. Также я импортирую основной файл scss только один раз в свой main.js
.
Могу ли я что-нибудь сделать, чтобы создать динамическую тематику для своего веб-приложения? Использование saas - хорошая идея? Может быть, Javascript?
РЕДАКТИРОВАТЬ
Мне кажется, что я недостаточно хорошо это объяснил, поэтому хочу добавить простой пример. Если вы посетите страницу Element, вы увидите в правом верхнем углу В углу есть селектор цвета, который при изменении цвета меняет также акцентные цвета всего веб-сайта, такие как цвета кнопок, цвета ссылок и т. д.
Надеюсь, это поможет немного лучше понять
РЕДАКТИРОВАТЬ
Сейчас я остановился на очень плохом и, как мне кажется, плохо оптимизированном решении. Идея состоит в том, что когда пользователь меняет тему, я просто создаю новый файл css и добавляю его в текущий документ.
let sheet = document.createElement('style')
sheet.innerHTML = `*[class*="--primary"]{
background-color: ${colors[0]};
}
...`;
document.body.appendChild(sheet);
Я действительно думаю, что это очень плохое решение, но сейчас я не могу придумать ничего другого, что могло бы работать динамически, когда пользователь изменяет параметр. Я бы действительно хотел, чтобы процесс был безупречным: пользователь выбирает цвет, и все приложение просто меняется на этот конкретный цвет, без заранее созданных theme.css
.
ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ
Наконец-то нашел решение, обратитесь к ответу!