Tailwind CSS Academy · Lektion

Knappvarianter och tillstånd

Skapa primära, sekundära, outline- och ghost-varianter av knappar med hover-, fokus-, aktivt och inaktiverat tillstånd med hjälp av Tailwind-verktyg.

Lektion 1 av 413 steg

Knappvarianter och tillstånd är en gratis lektion i Tailwind CSS Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Tailwind CSS Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Tailwind CSS Academy innehåller totalt 4 lektioner.

Varför knappvarianter är viktiga

Knappar är några av de mest interaktiva elementen på en sida, och användare förlitar sig på visuella signaler för att förstå deras syfte. Knappvarianter kommunicerar avsikten: en primär knapp driver huvudåtgärden, en sekundär knapp erbjuder ett alternativ och en outline- eller ghost-knapp erbjuder ett mer diskret alternativ.

Med Tailwind uppnår ni allt detta utan att skriva någon egen CSS. Varje variant är helt enkelt en annan kombination av utility-klasser som tillämpas på samma <button>-element.

<button class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700">
  Primary Button
</button>

Mönstret för primär knapp

En primär knapp använder en heltäckande bakgrundsfärg för att dra till sig maximal uppmärksamhet. Mönstret kombinerar padding-utilities, en bakgrundsfärg, vit text och en klass för rundade hörn.

Genom att lägga till hover:bg-blue-700 blir knappen mörkare när pekaren förs över den, vilket ger tydlig återkoppling om att elementet är interaktivt. Klassen font-semibold ökar textens visuella tyngd.

<button class="px-5 py-2.5 bg-blue-600 text-white font-semibold rounded-lg
           hover:bg-blue-700 active:bg-blue-800
           focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2
           transition-colors duration-150">
  Get Started
</button>

Sekundära varianter och outline-varianter

En sekundär knapp använder en ljusare bakgrund för att signalera en mindre framträdande åtgärd. En outline-knapp tar bort fyllningen helt och visar bara en kantlinje genom att använda border border-blue-600 text-blue-600 på en transparent bakgrund.

Vid hover kan outline-knappar fyllas med en ljus bakgrund, som hover:bg-blue-50, för att ge visuell återkoppling utan att överglänsa den primära knappen i närheten.

<!-- Secondary -->
<button class="px-5 py-2.5 bg-blue-100 text-blue-700 font-semibold rounded-lg
           hover:bg-blue-200 transition-colors duration-150">
  Learn More
</button>

<!-- Outline -->
<button class="px-5 py-2.5 border border-blue-600 text-blue-600 font-semibold rounded-lg
           hover:bg-blue-50 transition-colors duration-150">
  View Details
</button>

Ghost-knappvarianten

En ghost-knapp har som standard ingen bakgrund och ingen synlig kantlinje och ser ut som formaterad text tills användaren interagerar med den. Den här varianten passar bra för åtgärder med låg betoning, som att avbryta eller stänga.

Genom att använda hover:bg-gray-100 visas en diskret fyllning vid hover, och text-gray-700 håller texten läsbar utan att dra uppmärksamheten från primära åtgärder.

<button class="px-5 py-2.5 text-gray-700 font-semibold rounded-lg
           hover:bg-gray-100 active:bg-gray-200
           transition-colors duration-150">
  Cancel
</button>

Destruktiva knappar och riskknappar

En destruktiv knapp använder röda nyanser för att varna användare för oåterkalleliga åtgärder, som att ta bort data. Färgen signalerar fara utan att användaren behöver läsa etiketten noggrant.

Kombinera bg-red-600 med ett tydligt hover-tillstånd, hover:bg-red-700, och kombinera alltid knappen med en bekräftelsedialog för att förhindra oavsiktliga åtgärder.

<button class="px-5 py-2.5 bg-red-600 text-white font-semibold rounded-lg
           hover:bg-red-700 active:bg-red-800
           focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2
           transition-colors duration-150">
  Delete Account
</button>

Formatering av inaktiverat tillstånd

När en knapp ännu inte kan användas – till exempel medan ett formulär skickas – bör ni kommunicera detta visuellt med ett inaktiverat tillstånd. Tailwind tillhandahåller variantprefixet disabled: för exakt detta ändamål.

Använd disabled:opacity-50 disabled:cursor-not-allowed för att tona ned knappen och ändra pekaren, vilket signalerar att den inte kan klickas. Använd alltid HTML-attributet disabled tillsammans med dessa klasser för korrekt tillgänglighet.

<button
  disabled
  class="px-5 py-2.5 bg-blue-600 text-white font-semibold rounded-lg
         disabled:opacity-50 disabled:cursor-not-allowed
         hover:bg-blue-700 transition-colors duration-150">
  Submitting...
</button>

Laddningstillstånd med spinner

Ett vanligt mönster är att visa en laddningsspinner i en knapp medan en asynkron åtgärd slutförs. Ni kan använda Tailwinds animate-spin på en SVG-ikon som placeras före etiketttexten.

Använd inline-flex items-center gap-2 på knappen för att rikta in spinnern och texten sida vid sida, och lägg till pointer-events-none under laddningen för att förhindra dubbla skickanden.

<button class="inline-flex items-center gap-2 px-5 py-2.5
           bg-blue-600 text-white font-semibold rounded-lg
           pointer-events-none opacity-80">
  <svg class="w-4 h-4 animate-spin" fill="none" viewBox="0 0 24 24">
    <circle class="opacity-25" cx="12" cy="12" r="10"
            stroke="currentColor" stroke-width="4"></circle>
    <path class="opacity-75" fill="currentColor"
          d="M4 12a8 8 0 018-8v8z"></path>
  </svg>
  Saving...
</button>

Knappstorlekar med Tailwind

Olika sammanhang kräver olika knappstorlekar. En liten knapp är användbar i täta gränssnitt, som tabeller, medan en extra stor knapp fungerar bra som en framträdande CTA.

Definiera storlekar genom att variera värdena för px-*, py-* och text-*. En vanlig skala är sm (px-3 py-1.5 text-sm), md (px-5 py-2.5 text-base) och lg (px-6 py-3 text-lg).

<!-- Small -->
<button class="px-3 py-1.5 text-sm bg-blue-600 text-white rounded-md">Small</button>

<!-- Medium (default) -->
<button class="px-5 py-2.5 text-base bg-blue-600 text-white rounded-lg">Medium</button>

<!-- Large -->
<button class="px-6 py-3 text-lg bg-blue-600 text-white rounded-xl">Large</button>

Ikonknappar och knappar med ikon och text

Ikonknappar använder endast en ikon utan en synlig etikett och måste därför ha ett tillgängligt aria-label-attribut. Formge dem som en kvadrat med lika stor padding: p-2 skapar en kompakt klickbar yta runt ikonen.

För knappar med ikon och text använder ni inline-flex items-center gap-2 för att rikta in SVG-ikonen vertikalt med textetiketten oavsett teckenstorlek.

<!-- Icon only -->
<button aria-label="Delete" class="p-2 text-gray-500 hover:text-red-600 hover:bg-red-50 rounded-lg transition-colors">
  <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
          d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6M9 7h6m2 0H7"/>
  </svg>
</button>

<!-- Icon + text -->
<button class="inline-flex items-center gap-2 px-4 py-2 bg-green-600 text-white rounded-lg">
  <svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"/>
  </svg>
  Add Item
</button>

Knappar med full bredd och knappgrupper

En knapp med full bredd använder w-full för att sträcka sig över hela sin behållare, vilket är vanligt i mobila layouter och vid formulärskick. Genom att lägga till justify-center ser ni till att etiketten förblir centrerad.

En knappgrupp sammanfogar flera knappar sida vid sida. Ta bort den rundade kanten från knapparna i mitten och använd negativa marginaler för att sammanfoga kantlinjerna: first:rounded-l-lg last:rounded-r-lg border-r-0 skapar ett enhetligt utseende som ett piller.

<!-- Full width -->
<button class="w-full flex justify-center px-5 py-2.5 bg-blue-600 text-white font-semibold rounded-lg">
  Sign In
</button>

<!-- Button group -->
<div class="inline-flex">
  <button class="px-4 py-2 border border-gray-300 text-gray-700 rounded-l-lg hover:bg-gray-50">Left</button>
  <button class="px-4 py-2 border-t border-b border-gray-300 text-gray-700 hover:bg-gray-50">Middle</button>
  <button class="px-4 py-2 border border-gray-300 text-gray-700 rounded-r-lg hover:bg-gray-50">Right</button>
</div>

Enhetliga fokusringar för tillgänglighet

Varje knappvariant behöver en synlig fokusindikator för tangentbordsanvändare. Tailwinds focus:ring-*-utilities skapar en färgad ring utanför knappens kantlinje utan att påverka layouten.

Ett bra mönster är focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2. ring-offset-2 lägger till ett litet vitt mellanrum mellan knappen och ringen, så att den framträder mot färgade bakgrunder. Använd focus-visible:ring-2 för att visa ringen endast vid tangentbordsnavigering.

<button class="px-5 py-2.5 bg-purple-600 text-white font-semibold rounded-lg
           focus:outline-none focus-visible:ring-2
           focus-visible:ring-purple-500 focus-visible:ring-offset-2
           hover:bg-purple-700 transition-colors">
  Accessible Button
</button>

Snabbkontroll

Testa er förståelse av koncepten i Tailwind CSS Mastery från den här lektionen.

Sammanfattning av lektionen

I den här lektionen har ni lärt er att primära, sekundära, outline- och ghost-knappvarianter byggs genom att kombinera utilities för bakgrunds-, kantlinje- och textfärg; att interaktiva tillstånd som hover, aktiv, inaktiverad och laddning hanteras med Tailwinds variantprefix; samt att fokusringar med focus-visible:ring-2 säkerställer tangentbordstillgänglighet utan att störa musinteraktioner. Härnäst utforskar vi mönster för card-komponenter.

Gratis att börja

Lär dig HTML med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Knappvarianter och tillstånd” gratis?

Ja – hela texten till ”Knappvarianter och tillstånd” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Tailwind CSS Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Tailwind CSS Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Knappvarianter och tillstånd”?

Skapa primära, sekundära, outline- och ghost-varianter av knappar med hover-, fokus-, aktivt och inaktiverat tillstånd med hjälp av Tailwind-verktyg. Ni övar på Tailwind CSS Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Tailwind CSS Academy?

Du behöver inga förkunskaper. Utbildningen i Tailwind CSS Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Knappvarianter och tillstånd”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Tailwind CSS Academy-lektionen?

Ja. Varje Tailwind CSS Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Knappvarianter och tillstånd
  2. Mönster för kortkomponenter
  3. Badge- och taggkomponenter
  4. Kombinera komponenter i ett användargränssnitt
← Tillbaka till Tailwind CSS Academy