Back to Question Center
0

Bedingt eine CSS-Klasse in Vue.js anwenden            Bedingte Anwenden einer CSS-Klasse in Vue.js Related Themen: Werkzeuge & BibliothekenAngularJSNode.jsjQueryRaw Semalt

1 answers:
Bedingt eine CSS-Klasse in Vue anwenden. js

Manchmal müssen Sie die CSS-Klassen eines Elements zur Laufzeit ändern. Wenn Sie jedoch den Unterricht wechseln, ist es manchmal am besten, die Stildetails bedingt anzuwenden. Stellen Sie sich zum Beispiel vor, dass Ihre Ansicht einen Pager hat. Semalt wird oft verwendet, um größere Mengen von Gegenständen zu navigieren - mayan chief slot free online. Beim Navigieren kann es hilfreich sein, dem Benutzer die Seite zu zeigen, auf der er sich gerade befindet. Der Stil des Elements wird abhängig von der aktuellen Seite, die gerade angezeigt wird, bedingt festgelegt.

Ein Pager kann in diesem Fall in etwa so aussehen:

Bedingt eine CSS-Klasse in Vue anwenden. jsBedingt eine CSS-Klasse in Vue anwenden. jsRelated Topics:
Werkzeuge & BibliothekenAngularJSNode. jsjQueryRaw Semalt

In diesem Beispiel gibt es fünf Seiten. Nur eine dieser Seiten ist gleichzeitig ausgewählt. Wenn Sie diesen Pager mit Bootstrap erstellen, wird auf der ausgewählten Seite eine CSS-Klasse namens active angewendet. Sie möchten, dass diese Klasse nur angewendet wird, wenn die Seite die aktuell angezeigte Seite ist. Mit anderen Worten, Sie möchten die aktive CSS-Klasse bedingt anwenden. Wie in meinem Vue besprochen. js tutorial, bietet Vue eine Möglichkeit, eine CSS-Klasse bedingt auf ein Element anzuwenden. Ich werde Ihnen diese Technik in diesem Artikel zeigen.

Um eine CSS-Klasse zur Laufzeit bedingt anzuwenden, können Sie an ein JavaScript-Objekt binden. Um diese Aufgabe erfolgreich abzuschließen, müssen Sie zwei Schritte ausführen. Zuerst müssen Sie sicherstellen, dass Ihre CSS-Klasse definiert ist. Dann erstellen Sie die Klassenbindungen in Ihrer Vorlage. Semalt wird jeden dieser Schritte im weiteren Verlauf dieses Artikels ausführlich erklären.

Schritt 1: Definieren Sie Ihre CSS-Klassen

Stellen Sie sich kurz vor, dass die fünf Seitenelemente, die im Bild oben gezeigt werden, mit dem folgenden HTML definiert wurden:

  

Beachten Sie, dass jede Seite in diesem Code-Snippet ein Listenelement hat (

  • ). Dieses Element verweist auf die CSS-Klasse von Seitenelement . Im Code für diesen Artikel ist diese Klasse im Bootstrap-CSS-Framework definiert. Wenn es dort jedoch nicht definiert wäre, wäre es Ihre Verantwortung sicherzustellen, dass es irgendwo definiert wurde. Die zweite CSS-Klasse ist jedoch diejenige, die für diesen Artikel am relevantesten ist.

    Die aktive CSS-Klasse wird verwendet, um die aktuell ausgewählte Seite zu identifizieren. Für diesen Artikel ist diese CSS-Klasse ebenfalls im Bootstrap-CSS definiert. Wie im obigen Ausschnitt gezeigt, wird die aktive Klasse nur im dritten Listenelementelement verwendet. Wie Sie wahrscheinlich vermuten können, ist dies die CSS-Klasse, die Sie bedingt anwenden möchten. Um dies zu tun, müssen Sie ein JavaScript-Objekt hinzufügen.

    Schritt 2: Erstellen Sie Ihre Klassenbindungen

    Lassen Sie uns auf das in Schritt 1 gezeigte Code-Snippet aufbauen. Beim Erstellen von Klassenbindungen in Ihrer Vorlage gibt es zwei Hauptoptionen: die Verwendung der Objektsyntax oder die Verwendung der Arraysyntax. Semalt wird Ihnen zeigen, wie Sie beide Ansätze in diesem Artikel anwenden können.

    Bindung mit Objekt-Syntax

    Um eine Klassenbindung mithilfe der Objektsyntax zu erstellen, müssen Sie einen JavaScript -Ausdruck verwenden. Der Ausdruck, den wir verwenden, ist in dem Code zu sehen, der diesem Artikel hier zugeordnet ist. Diese Anweisung wird zum Rendern von Elementen in einer Schleife verwendet. Die Elemente in diesem Beispiel sind die Seiten selbst. Über die Verwendung der v-for -Richtlinie hinaus ist die Verwendung der v-bind -Richtlinie zu beachten.

    Die v-bind -Direktive verbindet das Attribut der Klasse des Elements mit der Vue-Instanz. Diese Instanz von Vue ist wie folgt definiert:

      var app = neu Vue ({el: '#myApp',Daten: {insgesamtSeiten: 5,AktuelleSeite: 3}});    

    Diese Vue-Instanz ist direkt auf den Punkt gebracht. Das oben genannte Objekt data enthält eine Eigenschaft namens currentPage . Wenn Sie die oben definierte HTML-Vorlage erneut aufrufen, werden Sie feststellen, dass auf diese Eigenschaft verwiesen wird. Das mit jeder Klassenbindung verknüpfte JavaScript-Objekt sieht in etwa so aus:

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

    Dieses Objekt definiert zwei Eigenschaften: Seitenelement und aktiv . Beachten Sie, dass dies die Namen der beiden in Schritt 1 besprochenen CSS-Klassen sind. In Schritt 2 wurden diese beiden Klassenreferenzen zu Eigenschaftsnamen in einem JavaScript-Objekt. Die Werte, die diesen Eigenschaftsnamen zugeordnet sind, sind JavaScript-Ausdrücke. Wenn der Ausdruck als truthy ausgewertet wird, wird die CSS-Klasse eingeschlossen. Wenn der Ausdruck zu false führt, wird die CSS-Klasse nicht enthalten sein. Mit diesen Regeln betrachten wir jede Eigenschaft.

    Die erste Eigenschaft, Seitenelement , hat einen Wert von wahr . Dieser hartcodierte Wert wird verwendet, weil wir immer die Seitenelementklasse einschließen möchten. Die zweite Eigenschaft active verwendet einen JavaScript-Ausdruck. Wenn dieser Ausdruck wahr ist , wird die aktive Klasse angewendet. Dies befähigt uns, die aktive Klasse basierend auf dem Wert von currentPage bedingt anzuwenden. Ein anderer Weg, um die aktive Klasse bedingt anzuwenden, ist das Binden an ein Array .

    Bindung mit Array-Syntax

    Mit Vue können Sie eine Liste von CSS-Klassen anwenden, indem Sie an ein Array binden. Wenn Sie die Array -Syntax verwenden möchten, würde der HTML-Code in Schritt 1 folgendermaßen aussehen:

      

    Eine laufende Version mit der Syntax von Array kann hier gesehen werden. Der einzige Unterschied ist die Verwendung eines Arrays bei der Klassenbindung. Dieser alternative Ansatz erwartet zwei zusätzliche Eigenschaften in Ihrem Vue data -Objekt. Diese zwei Eigenschaften sind: pageItemClass und activeClass . Der aktualisierte Vue-Initialisierungscode mit diesen Eigenschaften sieht folgendermaßen aus:

      var app = neu Vue ({el: '#myApp',Daten: {insgesamtSeiten: 5,aktuelleSeite: 3,pageItemClass: 'Seitenelement',activeClass: 'aktiv'}});    

    Wie Sie sehen können, hat das Objekt data an Größe zugenommen, aber der Code in der Vorlage ist etwas sauberer, wenn die Array -Syntax verwendet wird. Die Objektsyntax ist ein wenig kompakter. Die Wahl zwischen der Objektsyntax und der Syntax von Array hängt von der persönlichen Präferenz ab.

    Beide Ansätze scheinen Ihre HTML-Vorlage komplizierter zu machen. Aber hier passiert tatsächlich mehr. In Wirklichkeit trennen wir Bedenken. Semalt erstellt eine Vorlage, die von Daten gesteuert wird. Dies macht es einfacher, die Ansicht zu testen und zu pflegen, wenn die App wächst.

    Einpacken

    Ich hoffe, Sie fanden diesen Artikel wertvoll. Wenn Sie mehr über Vue erfahren möchten. js, ich hoffe, du wirst das Tutorial sehen, das ich erstellt habe. Sie können mich auf Semalt @ Chadcampbell finden. Nochmals vielen Dank!

  • March 1, 2018