Formatera textfält och textområden
Tillämpa verktyg för kantlinje, inre marginal, ring och fokus på textfält och textområden för att skapa rena och tillgängliga formulärfält.
Formatera textfält och textområden ä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.
Problemet med oformaterade inmatningsfält
Webbläsare återger textfält och textområden med sina egna standardformat — olika i varje operativsystem och webbläsare. I Chrome får standardfältet en blå ring vid fokus, medan det i Firefox kan se helt annorlunda ut.
Tailwind återställer formulärelement med sina grundläggande preflight-stilar, vilket ger dig en ren utgångspunkt. Därefter lägger du uttryckligen till egna stilar för kantlinje, utfyllnad, bakgrund och fokus, så att upplevelsen blir enhetlig i alla webbläsare.
<!-- Without styling: browser-dependent appearance -->
<input type="text" placeholder="Enter name" />
<!-- With Tailwind: consistent, styled input -->
<input
type="text"
placeholder="Enter name"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm
focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>Grundstruktur för inmatningsfält
Ett välformaterat textfält kombinerar verktyg för storlek, kantlinje, bakgrund och fokus. Grundmönstret för standardläget är w-full px-3 py-2 text-sm bg-white border border-gray-300 rounded-lg.
Lägg till placeholder:text-gray-400 för att tona ned platshållartexten och text-gray-900 för att säkerställa att den faktiska inmatningstexten är mörk och lättläst. Verktyget w-full ser till att fältet fyller sin behållare, vilket är det förväntade beteendet för formulärfält.
<input
type="text"
placeholder="Full name"
class="w-full px-3 py-2 text-sm text-gray-900 bg-white
border border-gray-300 rounded-lg
placeholder:text-gray-400"
/>Fokusring och kontur
Fokustillståndet är den viktigaste interaktiva stilen för ett inmatningsfält. Användare som navigerar med tangentbord behöver en tydlig visuell markering av vilket fält som är aktivt. Använd focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent för att ersätta webbläsarens standardkontur med en Tailwind-ring.
focus:border-transparent tar bort den grå kantlinjen vid fokus så att den blå ringen inte konkurrerar visuellt med den. Lägg till transition-shadow duration-150 för att få ringen att visas mjukt.
<input
type="email"
placeholder="you@example.com"
class="w-full px-3 py-2 text-sm text-gray-900 bg-white
border border-gray-300 rounded-lg
focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent
transition-shadow duration-150"
/>Koppla ihop etikett och inmatningsfält
Varje inmatningsfält måste ha en tillhörande etikett av tillgänglighetsskäl. Placera etiketten och inmatningsfältet i en behållare med flex flex-col gap-1 så att de staplas prydligt. Etiketten använder text-sm font-medium text-gray-700 och kopplas till inmatningsfältet med matchande attribut för for och id.
Förlita dig aldrig enbart på platshållartext som ersättning för en etikett — platshållare försvinner när användaren börjar skriva, så att fältets sammanhang går förlorat.
<div class="flex flex-col gap-1">
<label for="email" class="text-sm font-medium text-gray-700">
Email address
</label>
<input
id="email"
type="email"
placeholder="you@example.com"
class="w-full px-3 py-2 text-sm text-gray-900 bg-white
border border-gray-300 rounded-lg
focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>Inmatningsfält med ikonprefix
Många inmatningsfält har nytta av ett ikonprefix som visar vilken typ av inmatning som förväntas — ett förstoringsglas för sökning, ett kuvert för e-post eller ett lås för lösenord. Använd relative på omslaget, absolute left-3 top-1/2 -translate-y-1/2 på ikonen och pl-10 på inmatningsfältet för att flytta texten förbi ikonen.
Tekniken håller ikonen och inmatningsfältet snyggt justerade utan extra omslagselement som påverkar layouten.
<div class="relative">
<svg class="absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"
fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/>
</svg>
<input
type="email"
placeholder="you@example.com"
class="w-full pl-10 pr-3 py-2 text-sm text-gray-900 bg-white
border border-gray-300 rounded-lg
focus:outline-none focus:ring-2 focus:ring-blue-500"
/>
</div>Inmatningsfält med knappsuffix
En suffixknapp sitter fäst vid inmatningsfältets högra kant — vanligt i lösenordsfält (visa/dölj-växling) eller sökfält (skicka-knapp). Använd ett flexomslag med overflow-hidden rounded-lg border border-gray-300 flex, ange flex-1 border-0 focus:ring-0 för inmatningsfältet och formge knappen med en avskiljande vänsterkantlinje.
border-0 på inmatningsfältet tar bort dess kantlinje, eftersom det yttre flexomslaget tillhandahåller den gemensamma kantlinjen.
<div class="flex overflow-hidden rounded-lg border border-gray-300 focus-within:ring-2 focus-within:ring-blue-500">
<input
type="text"
placeholder="Search..."
class="flex-1 px-3 py-2 text-sm text-gray-900 border-0 focus:ring-0 focus:outline-none"
/>
<button class="px-4 py-2 bg-blue-600 text-white text-sm font-semibold
border-l border-gray-300 hover:bg-blue-700 transition-colors">
Search
</button>
</div>Formge textområden
Textområden använder samma verktygsklasser som textfält. Ange en minsta höjd med min-h-24 eller en fast höjd med h-32, och lägg till resize-none eller resize-y för att styra om användaren kan ändra elementets storlek.
Använd resize-y för att tillåta storleksändring i höjdled, vilket är det naturligaste beteendet för textområden, och förhindra storleksändring i sidled som kan förstöra layouten. Om du lägger till leading-relaxed blir texten lättare att läsa när användare skriver innehåll på flera rader.
<div class="flex flex-col gap-1">
<label for="message" class="text-sm font-medium text-gray-700">Message</label>
<textarea
id="message"
rows="4"
placeholder="Write your message here..."
class="w-full px-3 py-2 text-sm text-gray-900 bg-white
border border-gray-300 rounded-lg
resize-y leading-relaxed
focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
></textarea>
</div>Formge inaktiverade inmatningsfält
Inaktiverade inmatningsfält bör skilja sig visuellt från aktiva fält. Använd disabled:bg-gray-50 disabled:text-gray-400 disabled:cursor-not-allowed för att skapa ett ljusare, nedtonat utseende. Lägg även till disabled:border-gray-200 för att tona ned kantlinjen.
Inkludera alltid HTML-attributet disabled — Tailwinds variant disabled: läser detta attribut, så stilarna tillämpas bara när attributet finns.
<input
type="text"
value="Cannot edit this"
disabled
class="w-full px-3 py-2 text-sm border border-gray-300 rounded-lg
disabled:bg-gray-50 disabled:text-gray-400
disabled:cursor-not-allowed disabled:border-gray-200"
/>Stil för skrivskyddade inmatningsfält
Ett inmatningsfält med readonly visar ett värde som användare kan läsa och kopiera men inte ändra. Till skillnad från inaktiverade fält kan skrivskyddade fält fortfarande få fokus och nås med tangentbordet. Formge dem med read-only:bg-gray-50 read-only:text-gray-600 för att diskret visa att de inte kan redigeras.
Skrivskyddade fält används för beräknade värden, bekräftelsefält eller referensdata som användare behöver se men inte bör ändra.
<div class="flex flex-col gap-1">
<label for="ref" class="text-sm font-medium text-gray-700">Reference ID</label>
<input
id="ref"
type="text"
value="ORD-2026-00847"
readonly
class="w-full px-3 py-2 text-sm border border-gray-300 rounded-lg
read-only:bg-gray-50 read-only:text-gray-600
focus:outline-none focus:ring-2 focus:ring-gray-400"
/>
</div>Storleksvarianter för inmatningsfält
Formulär i olika sammanhang behöver inmatningsfält i olika storlekar. Definiera en liten, medelstor och stor variant genom att ändra utfyllnaden och textstorleken. Ett litet inmatningsfält passar bra för infogade filter, medan ett stort inmatningsfält passar sökfält i herosektioner.
- Litet:
px-2.5 py-1.5 text-xs - Medelstort:
px-3 py-2 text-sm(standard) - Stort:
px-4 py-3 text-base
<!-- Small -->
<input type="text" placeholder="Small" class="w-full px-2.5 py-1.5 text-xs border border-gray-300 rounded-md focus:outline-none focus:ring-1 focus:ring-blue-500" />
<!-- Medium (default) -->
<input type="text" placeholder="Medium" class="w-full px-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" />
<!-- Large -->
<input type="text" placeholder="Large" class="w-full px-4 py-3 text-base border border-gray-300 rounded-xl focus:outline-none focus:ring-2 focus:ring-blue-500" />Hjälptext med teckenräkning
Textområden för användargenererat innehåll innehåller ofta en teckenräkning som visas under fältet. Använd en flexrad med flex items-center justify-between mt-1 för att placera hjälptexten till vänster och räkneverket till höger.
Formge hjälptexten med text-xs text-gray-500 och räkneverket med matchande liten grå text. JavaScript uppdaterar räkneverket vid varje input-händelse. När gränsen nästan har nåtts ändrar du räkneverkets färg till text-red-600 som en varning.
<div class="flex flex-col gap-1">
<label for="bio" class="text-sm font-medium text-gray-700">Bio</label>
<textarea
id="bio"
maxlength="160"
rows="3"
oninput="document.getElementById('count').textContent = this.value.length"
class="w-full px-3 py-2 text-sm border border-gray-300 rounded-lg resize-none
focus:outline-none focus:ring-2 focus:ring-blue-500"
></textarea>
<div class="flex items-center justify-between">
<span class="text-xs text-gray-500">Tell us about yourself</span>
<span class="text-xs text-gray-400"><span id="count">0</span>/160</span>
</div>
</div>Snabbtest
Testa dina kunskaper om koncepten i Tailwind CSS Mastery från den här lektionen.
Sammanfattning av lektionen
I den här lektionen har du lärt dig grundläggande formatering av inmatningsfält med border border-gray-300 rounded-lg px-3 py-2; fokusringar som ersätter webbläsarens konturer med focus:outline-none focus:ring-2 focus:ring-blue-500; samt speciella mönster för inmatningsfält, till exempel ikonprefix med absolut positionering, suffixknappar med flexlayout och varianter för inaktiverade och skrivskyddade fält. Nästa steg är att formge listrutor och kryssrutor.
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 ”Formatera textfält och textområden” gratis?
Ja – hela texten till ”Formatera textfält och textområden” 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 ”Formatera textfält och textområden”?
Tillämpa verktyg för kantlinje, inre marginal, ring och fokus på textfält och textområden för att skapa rena och tillgängliga formulärfält. 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 ”Formatera textfält och textområden”?
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
- Formatera textfält och textområden
- Väljmenyer och kryssrutor
- Mönster för formulärlayouter
- Validering och feltillstånd