Skip to main content

Vue-3-Komponenten mit Tailwind CSS erstellen

Artikel von
Headshot of Mary Gathoni

Mary Gathoni

feature api

21. Februar 2023

0 Min. Lesezeit

Vue ist ein beliebtes JavaScript-Framework zum Erstellen vielseitiger Weboberflächen. Zu den überzeugendsten Funktionen zählen die einfache Integration in bestehende Codebasen und das geringe Gewicht des Frameworks. So können Entwicklerinnen und Entwickler problemlos damit in ihren Frontend-Projekten loslegen.

Das Herzstück von Vue ist ein Ansatz, bei dem sich Komponenten zum Erstellen von UI-Webanwendungen kombinieren lassen. Komponenten sind wiederverwendbare Codebausteine, aus denen Sie Ihre Anwendungen zusammensetzen können. Mit dem Komponentenmodell von Vue erstellen Sie eigenständige Komponenten, deren Logik, Inhalt und Stile an einem Ort gebündelt sind.

Für das Styling dieser Komponenten können Sie ein Framework wie Tailwind CSS verwenden und die Stile direkt in das Markup einfügen, um die Komponente noch stärker zu kapseln. Tailwind CSS ist ein CSS-Framework mit wiederverwendbaren Klassen zum Gestalten von Benutzeroberflächen (UI). Mit diesen Klassen können Sie beispielsweise Schriftarten, Farben, Innen- und Außenabstände, Animationen und Übergänge festlegen. Mit dem Attribut text-black wird beispielsweise der gesamte Text eines Elements schwarz dargestellt. Die Klassen lassen sich kombinieren, sodass Sie damit jedes beliebige Design umsetzen können.

In diesem Tutorial erfahren Sie, wie Sie mit Tailwind CSS Vue-3-Komponenten erstellen, indem Sie eine responsive Artikelkarte entwickeln. Den vollständigen Projektcode finden Sie hier.

Voraussetzungen

Für dieses Tutorial benötigen Sie:

  • Eine aktuelle Version von Node.js und eine installierte Version von npm

  • Einen Texteditor wie Visual Studio Code (VS Code)

  • Kenntnisse der Befehlszeile

  • Vertrautheit mit Vue und CSS

Eigene Vue-3-Komponenten mit Tailwind erstellen

Erstellen Sie zunächst ein neues Vue-3-Projekt. Führen Sie den folgenden Befehl in Ihrem Terminal aus, um create-vue zu installieren und auszuführen – das offizielle Gerüst-Tool von Vue zum Erstellen von Projekten auf Basis von vite:

npm init vue@latest

Sie werden aufgefordert, aus einer Liste optionaler Funktionen auszuwählen. Nennen Sie das Projekt vue-tailwindcss und wählen Sie bei allen übrigen Optionen No.

√ Project name: ... vue-tailwindcss
√ Add TypeScript? ... No / Yes
√ Add JSX Support? ... No / Yes
√ Add Vue Router for Single Page Application development? ... No / Yes
√ Add Pinia for state management? ... No / Yes
√ Add Vitest for Unit Testing? ... No / Yes
√ Add an End-to-End Testing Solution? » No
√ Add ESLint for code quality? ... No / Yes
√ Add Prettier for code formatting? ... No / Yes

Wechseln Sie nun mit cd vue-tailwindcss in den Projektordner und führen Sie npm install aus, um die Open-Source-Abhängigkeiten des Projekts von npm zu installieren.

Führen Sie npm run dev aus, um die Anwendung in einer Entwicklungsumgebung zu starten.

Mit diesem Befehl sollte die App auf dem lokalen Host gestartet werden:

Terminalausgabe mit Vite v4.0.4, das lokal unter http://localhost:5173/ ausgeführt wird

Rufen Sie die angegebene lokale URL auf, um die App anzuzeigen:

Dunkle Willkommensseite eines Vue-Projekts mit Vue-Logo, der Nachricht „Geschafft!“, Navigationslinks und Bereichen zu Dokumentation, Tools, Ökosystem, Community und

Nun richten Sie Tailwind CSS in der Vue-App ein.

Tailwind mit Vue einrichten

Führen Sie zunächst den folgenden Befehl im Terminal aus:

npm install -D tailwindcss@latest postcss@latest autoprefixer@latest

Mit diesem Befehl installieren Sie Tailwind CSS und dessen Peer-Abhängigkeiten (autoprefixer und postcss) über npm.

Erstellen Sie als Nächstes die Dateien tailwind.config.js und postcss.config.js, indem Sie den folgenden Befehl ausführen. Mit diesen Dateien konfigurieren und individualisieren Sie Tailwind:

npx tailwindcss init -p

Mit diesem Befehl sollte im Stammverzeichnis des Projekts die Datei tailwind.config.js mit folgendem Inhalt erstellt werden:

   module.exports = {
   content: [],
   theme: {
     extend: {},
   },
   plugins: [],
 }

Außerdem haben Sie die Datei postcss.config.js erstellt und die Plugins tailwindcss und autoprefixer konfiguriert:

  module.exports = {
   plugins: {
     tailwindcss: {},
     autoprefixer: {},
   },
 }

Passen Sie in tailwind.config.js das Content-Array so an, dass es alle Pfade zu Ihren Seiten und Komponenten enthält. Dadurch wird Tailwind so konfiguriert, dass ungenutzte CSS-Klassen aus der endgültigen Ausgabe entfernt werden und die Dateigröße sinkt.

Ihre Datei tailwind.config.js sollte nun so aussehen:

  module.exports = {
   content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"],
   theme: {
     extend: {},
   },
   plugins: [],
  };

Erstellen Sie als Nächstes im Ordner src des Projekts eine neue Datei namens index.css und fügen Sie Folgendes ein:

@tailwind base;
@tailwind components;
@tailwind utilities;

Mit der Direktive @tailwind haben Sie die Basis-, Komponenten- und Utility-Stile von Tailwind in Ihr Projekt eingebunden. Wenn Sie das Projekt später erstellen, ersetzt Tailwind diese Direktiven automatisch durch die von Ihnen festgelegten Stile.

Importieren Sie nun index.css in unsere Datei ./src/main.js, um die Datei zu verwenden:

import './index.css'

Beachten Sie, dass Sie die Zeile entfernen sollten, die die Datei assets/main.css importiert. So verhindern Sie, dass Sie Vanilla CSS verwenden.

Nun können Sie mit Tailwind Komponenten erstellen.

Vue-Komponenten erstellen

Um zu erfahren, wie Sie Tailwind in Vue-Komponenten verwenden, erstellen Sie eine Kartenkomponente für einen Artikel.

Erstellen Sie anschließend im Ordner src/components eine neue Datei namens ArticleCard.vue. Fügen Sie den folgenden Code ein:

<template>
  <div>
    <div>
      <img src="../assets/coverimage.jpg" alt="Close-up of code" />
    </div>
    <div>
      <div>Vue</div>
      <a href="#">Building Vue 3 Components With Tailwind CSS</a>
      <p>
        Learn how to create visually stunning Vue components using the popular
        utility-first CSS framework Tailwind.
      </p>
    </div>
  </div>
</template>

Mit dem obigen Code wird ein Template namens ArticleCard erstellt. Es definiert eine Kartenkomponente mit einem Bild und einer kurzen Beschreibung des Artikels.

Um die Komponente im Browser anzuzeigen, bereinigen Sie die Startseite, indem Sie den gesamten Inhalt der Datei App.vue löschen. Importieren Sie anschließend die Komponente ArticleCard in den Script-Bereich von App.vue:

<script setup>
import ArticleCard from "./components/ArticleCard.vue";
</script>

Verwenden Sie die Komponente anschließend im Template:

<template>
  <ArticleCard />
</template>

Als Nächstes gestalten Sie die Karte mit Tailwind-CSS-Utility-Klassen.

Utility-Klassen erklärt

Mit Vanilla CSS und einigen anderen CSS-Frameworks können Sie Elemente auf einer Seite mithilfe benutzerdefinierter CSS-Klassen gestalten.

Hier sehen Sie ein Beispiel für ein Link-Element, das mit den Klassen link-wrapper und link gestaltet wurde:

<template>
  <div class="link-wrapper">
    <a href="#" class="link">Building Vue 3 Components With Tailwind CSS</a>
  </div>
</template>
<style>
.link-wrapper {
  padding: 8px;
}
.link {
  font-weight: 500;
  font-size: 1.125rem;
  line-height: 1.75rem;
  color: #000;
}
</style>

Warum Tailwind CSS verwenden?

Das Problem bei diesem Ansatz: Sie müssen jedes Mal aussagekräftige Klassennamen erstellen, wenn Sie ein Element gestalten möchten. Alternativ müssen Sie sich einen extrem langen, beschreibenden Namen merken, wenn Sie eine Klasse wiederverwenden möchten. Außerdem müssen Sie beträchtliche Mengen an CSS schreiben, da jeder Klassenname, den Sie einer Seite hinzufügen, mit entsprechenden Styles einhergeht. Wenn Ihre Anwendung wächst, werden also auch die CSS-Dateien größer. Das erhöht die Bundle-Größe und führt zu längeren Ladezeiten.

In Tailwind CSS können Sie dagegen vordefinierte CSS-Klassen verwenden, die Utility-Klassen genannt werden. Sie bieten gängige Styling-Optionen wie Flexbox, Textausrichtung, Rahmen, Außen- und Innenabstände sowie Farben. Damit können Sie Seiten gestalten, ohne CSS zu schreiben.

Sehen wir uns an, wie das vorherige Link-Beispiel mit Tailwind CSS aussehen würde:

<div class="p-8">
    <a href="#" class="font-medium text-lg text-black">Vue + TailwindCSS</a>
</div>

Sie haben das Style-Objekt und die benutzerdefinierten Klassen nun durch die folgenden Utility-Klassen ersetzt:

  • p-8 legt den Innenabstand auf 8 px fest.

  • font-medium legt die Schriftstärke auf 500 px fest.

  • text-xl legt die Schriftgröße auf 1.125 rem und die Zeilenhöhe auf 1.75 rem fest.

  • text-black legt die Textfarbe auf Schwarz fest.

Mit Utility-Klassen benötigen Sie weniger CSS. Außerdem können alle, die sich den Code ansehen, die beabsichtigte Gestaltung der Elemente leicht nachvollziehen, ohne ein Stylesheet heranziehen zu müssen.

Tailwind bietet zahlreiche Utility-Klassen. Eine Übersicht finden Sie in der Dokumentation zu den Utilities.

Eine Kartenkomponente mit Tailwind CSS gestalten

Jetzt, da Sie mit Utility-Klassen vertraut sind, können Sie die Kartenkomponente gestalten.

Ändern Sie zunächst die Datei src/components/ArticleCard.vue, damit sie Tailwind-Utility-Klassen verwendet:

<template>
  <div class="flex max-w-2xl mx-auto bg-white rounded-sm shadow-md">
    <div>
      <img
        class="h-full w-full object-cover"
        src="../assets/coverimage.jpg"
        alt="Closeup code"
      />
    </div>
    <div class="p-8">
      <div class="uppercase tracking-wide text-sm text-violet-500 font-medium">
        Vue
      </div>
      <a
        href="#"
        class="mt-1 text-lg tracking-tight font-medium text-black hover:underline"
        >Building Vue 3 Components With Tailwind CSS
      </a>
      <p class="mt-2 text-sm text-slate-500">
        Learn how to create visually stunning Vue components using the popular
        utility-first CSS framework Tailwind.
      </p>
    </div>
  </div>
</template>

Mit den neuen Stilen sollte die Kartenkomponente so aussehen:

Code-Editor neben einer Karte mit dem Titel „Vue-3-Komponenten mit Tailwind CSS erstellen“ und einer Beschreibung zur Erstellung von Vue-Komponenten mit Tailwind.

Zusätzlich zu den Utility-Klassen haben Sie Modifikatoren für das Styling der Karte verwendet. Beachten Sie die Klasse hover:underline des Tags <a/>: Dabei ist hover der Modifikator.

In Tailwind stellen Sie Modifikatoren an den Anfang eines Utility-Klassennamens, um den gewünschten Zustand anzugeben. Im obigen Beispiel haben Sie den Hover-Zustand festgelegt. Sie könnten aber auch den Fokuszustand mit der Klasse focus:text-violet-200 oder den aktiven Zustand mit active:text-violet-600 festlegen.

Je nach Bedingung, auf die Sie abzielen möchten, können Sie verschiedene Tailwind-CSS-Modifikatoren verwenden. Die vollständige Liste finden Sie in der Dokumentation zu Tailwind CSS.

Auf größeren Bildschirmen sieht die Kartenkomponente bisher gut aus. Je kleiner der Bildschirm jedoch wird, desto gedrängter wirkt sie:

Blog-Karte mit dem Titel „Vue-3-Komponenten mit Tailwind CSS erstellen“, links ist unscharfer Code zu sehen

Zum Glück können Sie das Layout der Karte an die Bildschirmbreite anpassen.

Breakpoints in Tailwind CSS verwenden

Mit Tailwind CSS können Sie Utility-Klassen abhängig vom jeweiligen Breakpoint anwenden. Standardmäßig gibt es fünf Breakpoints, die jeweils ab einer bestimmten Mindestbreite greifen:

  • sm — 640 px

  • md — 768 px

  • lg — 1024 px

  • xl — 1280 px

  • 2xl — 1536 px

Um einen Breakpoint zu verwenden, stellen Sie der Utility-Klasse den Breakpoint gefolgt von einem Doppelpunkt (:) voran.

breakpoint:utility-class

Betrachten Sie die folgende Schaltfläche:

<button class="w-16 md:w-32 lg:w-48">
  Submit
</button>

Tailwind wendet bei kleinen Bildschirmen die Klasse w-16, bei mittelgroßen Bildschirmen w-32 und bei großen Bildschirmen w-48 an.

Mit Breakpoints können Sie Layout, Größe, Farbe und andere Eigenschaften ändern, ohne Media Queries zu verwenden. Sie können die Bildschirmgrößen auch in tailwind.config.js anpassen, wenn die Standardgrößen Ihren Designanforderungen nicht entsprechen.

Mit dem folgenden Code können Sie beispielsweise die Bildschirmgröße lg überschreiben:

module.exports = {
  theme: {
    extend: {
      screens: {
        'lg': '960px',
      },
    },
  },
}

Verwenden Sie in Ihrer Artikelkartenkomponente Breakpoints, um das Layout der Karte zu ändern und die Bildgröße anzupassen:

Unten sehen Sie den geänderten Code. Beachten Sie die ersten Tags <div/> und <img/>:

<template>
  <div
    class="md:flex md:max-w-2xl max-w-md mx-auto bg-white rounded-sm shadow-md overflow-hidden"
  >
    <div>
      <img
        class="h-48 w-full object-cover md:h-full"
        src="../assets/coverimage.jpg"
        alt="Closeup code"
      />
    </div>
    <div class="p-8">
      <div class="uppercase tracking-wide text-sm text-violet-500 font-medium">
        Vue
      </div>
      <a
        href="#"
        class="mt-1 text-lg tracking-tight font-medium text-black hover:underline"
        >Building Vue 3 Components With Tailwind CSS</a
      >
      <p class="mt-2 text-sm text-slate-500">
        Learn how to create visually stunning Vue components using the popular
        utility-first CSS framework Tailwind.
      </p>
    </div>
  </div>
</template>

Sie haben folgende Änderungen vorgenommen:

  • Mit den Modifikatoren md:flex und md:max-w-2xl wird die Kartenkomponente bei mittelgroßen und großen Bildschirmen zu einem Flex-Container mit einer maximalen Breite von 48 rem. Bei kleinen Bildschirmen legt die Klasse max-w-md die Breite auf 28 rem fest.

  • Im Element <img/> zeigt md:h-full das Bild bei mittelgroßen und großen Bildschirmen in voller Höhe an. Bei kleineren Bildschirmen legt die Klasse h-48 die Höhe auf 12 rem fest.

Auf einem kleinen Bildschirm sieht die fertige Komponente so aus:

Blog-Karte mit CSS-Code über dem Titel „Vue-3-Komponenten mit Tailwind CSS erstellen“ und einer Beschreibung zur Erstellung von Vue-Komponenten.

Das war’s! Jetzt können Sie Vue-Komponenten mit Tailwind CSS erstellen.

Wenn Sie Ihre Vue-Anwendung fertiggestellt haben, erfahren Sie hier, wie Sie sie auf Netlify bereitstellen und automatische Sicherheitsupdates von Snyk erhalten. Erstellen Sie noch heute ein kostenloses Konto und importieren Sie Ihr Projekt in Snyk, um Schwachstellen in den Abhängigkeiten Ihres Projekts zu finden und zu beheben – und Ihre Anwendung vor XSS und anderen Sicherheitsbedrohungen zu schützen.

Fazit

In diesem Tutorial haben Sie erfahren, wie Sie mit Tailwind CSS eine Vue-3-Komponente erstellen. Tailwind CSS ist ein Utility-First-Framework, das einen effizienteren und optimierten Workflow für die Entwicklung von UI-Komponenten ermöglicht. Mit Utility-Klassen erstellen Sie responsive Designs, ohne auf externe Stylesheets zurückgreifen oder sich Dutzende von Klassennamen merken zu müssen. Durch die Anpassung der Standardklassen können Sie mit Tailwind ein eigenes Designsystem erstellen. Außerdem entfernt Tailwind automatisch alle ungenutzten Klassen aus dem Production-Build. So landet weniger Code im fertigen Produkt.

Gepostet in:

Weiterlesen

Blog

Stadium-Sommer: Die Snyk Connect Fan Zone Tour

Die Fan Zone Tour von Snyk brachte KI-Security-Workshops, Networking und freundschaftlichen Wettbewerb in 8 Städte und 3 virtuelle Sessions. Die Teilnehmenden bauten ihre Kompetenzen aus, tauschten Ideen aus und entwickelten sich gemeinsam weiter.

Blog

Snyk VulnBench JS 1.0: Finden LLMs zweimal dieselben Fehler?

Snyk VulnBench JS 1.0: 300 wiederholte Scans zeigen, dass LLM-Sicherheitsergebnisse von Durchlauf zu Durchlauf variieren, während SAST und Modelle unterschiedliche Sicherheitslücken aufdecken.

feature insights context
Blog

KI-Sicherheit gemeinsam mit unseren Kunden gestalten: 5 Erkenntnisse aus dem Design-Partner-Programm von Evo

Lernen Sie 5 wichtige Erkenntnisse aus Snyks Design-Partner-Programm für Evo kennen. Erfahren Sie, wie KI-Erkennung, Risikoanalyse und automatisierte Richtlinien Teams dabei helfen, generative KI abzusichern und die Ausbreitung von KI-Anwendungen im großen Maßstab zu steuern.