En aquest tema, aprendrem com enllaçar classes i estils CSS dinàmicament a les nostres plantilles Vue.js. Això ens permetrà aplicar estils de manera condicional i reactiva, millorant la interactivitat i l'experiència d'usuari de les nostres aplicacions.
Continguts
Enllaços de classes
Enllaç de classes amb objectes
Podem utilitzar objectes per enllaçar classes de manera condicional. La clau de l'objecte és el nom de la classe, i el valor és una expressió booleana que determina si la classe s'ha d'aplicar o no.
En aquest exemple:
- La classe
active
s'aplicarà siisActive
éstrue
. - La classe
text-danger
s'aplicarà sihasError
éstrue
.
Enllaç de classes amb arrays
També podem utilitzar arrays per enllaçar múltiples classes de manera condicional.
En aquest exemple:
- La classe
active
s'aplicarà siisActive
éstrue
. - La classe
errorClass
s'aplicarà sempre queerrorClass
tingui un valor.
Enllaços d'estils
Enllaç d'estils amb objectes
Podem utilitzar objectes per enllaçar estils de manera dinàmica. La clau de l'objecte és la propietat CSS, i el valor és l'expressió que determina el valor de la propietat.
En aquest exemple:
- La propietat
color
s'establirà al valor deactiveColor
. - La propietat
fontSize
s'establirà al valor defontSize
seguit depx
.
Enllaç d'estils amb arrays
També podem utilitzar arrays per enllaçar múltiples objectes d'estils.
En aquest exemple:
- Els estils de
baseStyles
s'aplicaran primer. - Els estils de
overridingStyles
s'aplicaran després, sobreescrivint qualsevol estil conflictiu debaseStyles
.
Exemples pràctics
Exemple 1: Enllaç de classes amb objectes
<template> <div> <button v-bind:class="{ active: isActive }" @click="toggleActive">Toggle Active</button> </div> </template> <script> export default { data() { return { isActive: false }; }, methods: { toggleActive() { this.isActive = !this.isActive; } } }; </script> <style> .active { background-color: green; color: white; } </style>
Exemple 2: Enllaç d'estils amb objectes
<template> <div> <p v-bind:style="{ color: textColor, fontSize: fontSize + 'px' }">Text amb estils dinàmics</p> <button @click="increaseFontSize">Augmenta la mida del text</button> </div> </template> <script> export default { data() { return { textColor: 'blue', fontSize: 14 }; }, methods: { increaseFontSize() { this.fontSize += 2; } } }; </script>
Exercicis
Exercici 1: Enllaç de classes
Crea un component que canviï la classe d'un paràgraf entre highlight
i normal
quan es faci clic en un botó.
Solució
<template> <div> <p v-bind:class="{ highlight: isHighlighted }">Aquest és un paràgraf.</p> <button @click="toggleHighlight">Canvia el ressaltat</button> </div> </template> <script> export default { data() { return { isHighlighted: false }; }, methods: { toggleHighlight() { this.isHighlighted = !this.isHighlighted; } } }; </script> <style> .highlight { background-color: yellow; } </style>
Exercici 2: Enllaç d'estils
Crea un component que canviï el color del text i la mida de la font d'un paràgraf quan es faci clic en un botó.
Solució
<template> <div> <p v-bind:style="{ color: textColor, fontSize: fontSize + 'px' }">Text amb estils dinàmics</p> <button @click="changeStyles">Canvia els estils</button> </div> </template> <script> export default { data() { return { textColor: 'black', fontSize: 16 }; }, methods: { changeStyles() { this.textColor = this.textColor === 'black' ? 'red' : 'black'; this.fontSize = this.fontSize === 16 ? 20 : 16; } } }; </script>
Conclusió
En aquest tema, hem après com enllaçar classes i estils de manera dinàmica a les nostres plantilles Vue.js. Hem vist com utilitzar objectes i arrays per aplicar estils de manera condicional i reactiva. Aquests conceptes són fonamentals per crear aplicacions Vue.js interactives i atractives visualment. En el proper tema, explorarem la renderització condicional per mostrar o amagar elements basant-nos en condicions específiques.
Curs de Vue.js
Mòdul 1: Introducció a Vue.js
- Què és Vue.js?
- Configuració de l'entorn de desenvolupament
- Creant la teva primera aplicació Vue
- Entenent la instància de Vue
Mòdul 2: Conceptes bàsics de Vue.js
- Sintaxi de plantilles
- Enllaç de dades
- Propietats computades i observadors
- Enllaços de classes i estils
- Renderització condicional
- Renderització de llistes
Mòdul 3: Components de Vue.js
- Introducció als components
- Props i esdeveniments personalitzats
- Slots
- Components dinàmics i asíncrons
- Comunicació entre components
Mòdul 4: Vue Router
- Introducció a Vue Router
- Configuració de Vue Router
- Rutes dinàmiques
- Rutes niades
- Guàrdies de navegació
Mòdul 5: Gestió d'estat amb Vuex
- Introducció a Vuex
- Estat, getters, mutacions i accions
- Mòduls a Vuex
- Utilitzant Vuex en components
- Patrons avançats de Vuex
Mòdul 6: Directives de Vue.js
Mòdul 7: Plugins de Vue.js
Mòdul 8: Proves en Vue.js
Mòdul 9: Conceptes avançats de Vue.js
- Funcions de renderització i JSX
- Renderització del costat del servidor (SSR) amb Nuxt.js
- API de composició de Vue 3
- Optimització del rendiment