Back to Question Center
0

Applicazione condizionale di una classe CSS in Vue.js            Applicazione condizionale di una classe CSS in Vue.js Argomenti correlati: Strumenti e & LibrariesAngularJSNode.jsjQueryRaw Semalt

1 answers:
Applicazione condizionale di una classe CSS in Vue. js

A volte è necessario modificare le classi CSS di un elemento in fase di runtime. Ma quando si cambiano le classi, a volte è meglio applicare i dettagli di stile in modo condizionale. Ad esempio, immagina che la tua vista abbia un cercapersone. I semalt vengono spesso usati per navigare in gruppi di oggetti più grandi - lentes ray-ban modelos novos. Durante la navigazione, può essere utile mostrare all'utente la pagina in cui si trova attualmente. Lo stile dell'articolo è impostato in modo condizionale, in base alla pagina corrente che viene visualizzata.

Un cercapersone in questo caso può assomigliare a questo:

Applicazione condizionale di una classe CSS in Vue. jsApplicazione condizionale di una classe CSS in Vue. js Argomenti correlati:
Tools & LibrariesAngularJSNode. jsjQueryRaw Semalt

In questo esempio, ci sono cinque pagine. Solo una di queste pagine è selezionata alla volta. Se hai creato questo cercapersone con Bootstrap, la pagina selezionata avrebbe una classe CSS denominata attiva applicata. Vorresti che questa classe venisse applicata solo se la pagina era la pagina attualmente visualizzata. In altre parole, si dovrebbe condizionatamente applicare la classe CSS attiva . Come discusso nel mio Vue. js tutorial, Vue fornisce un modo per applicare in modo condizionale una classe CSS a un elemento. Ti mostrerò questa tecnica in questo articolo.

Per applicare in modo condizionale una classe CSS in fase di runtime, è possibile eseguire il binding a un oggetto JavaScript. Per completare correttamente questa attività, è necessario completare due passaggi. Innanzitutto, devi assicurarti che la tua classe CSS sia definita. Quindi, si creano i binding di classe nel modello. Semalt spiegherà ciascuno di questi passaggi in dettaglio nel resto di questo articolo.

Passaggio 1: Definisci le tue classi CSS

Immagina, per un momento, che le cinque voci di pagina mostrate nell'immagine sopra siano state definite usando il seguente codice HTML:

   

Si noti che ogni pagina in questo snippet di codice ha un elemento item (

  • ). Questo elemento fa riferimento alla classe CSS della pagina. Nel codice per questo articolo, questa classe è definita nel framework CSS Bootstrap. Tuttavia, se non fosse stato definito lì, sarebbe tua responsabilità assicurarti che sia stato definito da qualche parte. La seconda classe CSS è quella che è più rilevante per questo articolo, però.

    La classe CSS attiva viene utilizzata per identificare la pagina attualmente selezionata. Per questo articolo, questa classe CSS viene anche definita nel CSS Bootstrap. Come mostrato nello snippet precedente, la classe active viene utilizzata solo nell'elemento item dell'elenco third . Come puoi probabilmente intuire, questa è la classe CSS che vuoi applicare in modo condizionale. Per fare ciò, è necessario aggiungere un oggetto JavaScript.

    Passaggio 2: Crea i binding di classe

    Costruiamo sul frammento di codice mostrato nel passaggio 1. Quando crei i collegamenti di classi nel tuo modello, ci sono due scelte principali: usare la sintassi dell'oggetto o usare la sintassi dell'array. Semalt mostrerà come utilizzare entrambi gli approcci nel resto di questo articolo.

    Associazione tramite sintassi dell'oggetto

    Per creare un bind di classe usando la sintassi dell'oggetto, devi usare un'espressione JavaScript . L'espressione che utilizzeremo può essere vista nel codice associato a questo articolo qui. Questa direttiva viene utilizzata per eseguire il rendering di elementi in un ciclo. Gli articoli in questo esempio sono le pagine stesse. Oltre l'uso della direttiva v-for , si noti l'uso della direttiva v-bind .

    La direttiva v-bind collega l'attributo di classe all'istanza di Vue. Quella istanza di Vue è definita in questo modo:

         var app = new Vue ({el: '#myApp',dati: {totalePagine: 5,currentPage: 3}});    

    Questa istanza Vue è direttamente al punto. L'oggetto data sopra include una proprietà denominata currentPage . Se rivedi il modello HTML definito sopra, noterai che questa proprietà viene referenziata. In effetti, l'oggetto JavaScript associato a ogni associazione di classe ha un aspetto simile al seguente:

         {'page-item': true, 'active' :( page === currentPage)}    

    Questo oggetto definisce due proprietà: page-item e active . In particolare, questi sono i nomi delle due classi CSS discusse nel Passaggio 1. Nel Passaggio 2, questi due riferimenti di classe sono diventati nomi di proprietà in un oggetto JavaScript. I valori associati a questi nomi di proprietà sono espressioni JavaScript. Se l'espressione viene valutata come veritiera, la classe CSS verrà inclusa. Se l'espressione restituisce false , la classe CSS sarà non inclusa. Con queste regole in mente, diamo un'occhiata a ciascuna proprietà.

    La prima proprietà, page-item , ha un valore di true . Questo valore hard-coded viene utilizzato perché vogliamo sempre includere la classe page-item . La seconda proprietà, active , utilizza un'espressione JavaScript. Quando questa espressione è true , verrà applicata la classe attiva . Questo ci autorizza a applicare in modo condizionale la classe attiva in base al valore di currentPage . Un altro modo per applicare in modo condizionale la classe attiva è il binding a una matrice .

    Associazione tramite sintassi di matrice

    Vue consente di applicare un elenco di classi CSS associandosi a una matrice . Se si volesse utilizzare la sintassi Array , l'HTML mostrato nel passaggio 1 diventerebbe questo:

       

    Una versione in esecuzione con la sintassi Array può essere vista qui. L'unica differenza è l'uso di una matrice sul legame di classe. Questo approccio alternativo prevede l'esistenza di due proprietà aggiuntive nell'oggetto dei dati di Vue . Queste due proprietà sono: pageItemClass e activeClass . Il codice di inizializzazione Vue aggiornato con queste proprietà è simile al seguente:

         var app = new Vue ({el: '#myApp',dati: {totalePagine: 5,currentPage: 3,pageItemClass: 'page-item',activeClass: 'attivo'}});    

    Come potete vedere, l'oggetto data è cresciuto di dimensioni, ma il codice nel modello è leggermente più pulito quando si utilizza la sintassi Array . La sintassi dell'oggetto è leggermente più compatta. La scelta tra la sintassi dell'oggetto e la sintassi Array si riduce alle preferenze personali.

    Entrambi gli approcci possono rendere il tuo modello HTML più complicato. Tuttavia, in realtà c'è di più qui. In realtà, stiamo separando le preoccupazioni. Semalt crea un modello guidato dai dati. Ciò rende la vista più facile da testare e più facile da mantenere man mano che l'app cresce.

    Wrap Up

    Spero che tu abbia trovato questo articolo prezioso. Se vuoi saperne di più su Vue. js, spero che controllerai il tutorial che ho creato. Puoi trovarmi su Semalt @chadcampbell. Ancora una volta grazie!

  • March 1, 2018