Editar: ¡Resolvió el problema usando el consejo de @Amaarockz!
No he tenido mucha experiencia en variables CSS y estructuras de estilo complicadas, ¡pero resultó que son geniales!
Tengo un menú construido con Vue.js (y Vuetify), datos pasados desde el backend como:
[ { id: 13241243, color: "#123456", activeColor: "#abcdef", text: "Asadpyqewri" }, { id: 742378104, color: "#234567", activeColor: "#bcdefa", text: "Iudaofqepr" } ]El menú se parece a:
<v-btn-toggle> <v-btn v-for="item in items" :key="item.id" :color="item.color"> {{item.text}} </v-btn> </v-btn-toggle>Quiero saber, ¿cómo puedo hacer dinámicamente los elementos en un color diferente cuando tienen: pseudo-clase activa?
mounted(){ window.onload = function(){ const targetNodes = document.getElementsByClassName('asdff'); var a = targetNodes.item(0); //"targetNodes" is a HTMLCollection with 3 elements, but "a" is null. } }Los últimos dos intentos son los que creo más esperanzadores. ¿Hay alguna forma de solucionarlo?
Intenta usar pseudoclase como
Vue.component('pseudo', { data() { return { msg: 'Hover on me', } }, props: { color: { type: String, }, text: { type: String, } }, computed: { cssAttrs() { return { '--color': this.color, '--text': JSON.stringify(this.text), } } }, template: `<button class="content" :style="cssAttrs">{{msg}}</button>`, }); var vm = new Vue({ el: '#app', }); .content { color: red; } .content:focus { content: var(--text); color: var(--color); } <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <pseudo color="blue" text="Changing!!"></pseudo> </div>