Arbitrære værdier og deres omkostning
Brug klammeparentesnotation som w-[347px] til enkeltstående værdier, og forstå afvejningen mellem fleksibilitet og et potentielt overfyldt stylesheet.
Arbitrære værdier og deres omkostning er en gratis Tailwind CSS Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Tailwind CSS Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Tailwind CSS Academy-kurset indeholder 4 lektioner i alt.
Hvad er vilkårlige værdier
Tailwinds syntaks for vilkårlige værdier lader dig bruge enhver CSS-værdi direkte i et klassenavn ved hjælp af kantet parentes-notation. I stedet for at være begrænset til Tailwinds foruddefinerede skala kan du skrive w-[347px], text-[#1a2b3c] eller grid-cols-[1fr_2fr_1fr].
Denne funktion, som aktiveres af JIT-motoren, er en af Tailwinds mest kraftfulde muligheder. Den bygger bro mellem hjælpeklasser og de sjældne tilfælde, hvor der virkelig er brug for en præcis værdi uden for skalaen.
<div class="w-[347px] h-[calc(100vh-64px)] bg-[#1a1a2e] text-[#e2e8f0]">
Arbitrary values for precise control
</div>
<div class="grid grid-cols-[1fr_2fr_1fr] gap-[22px]">
Custom grid layout with arbitrary columns
</div>Syntaksreference for vilkårlige værdier
Syntaksen med kantede parenteser fungerer med ethvert præfiks til et Tailwind-hjælpeværktøj. Værdien i parenteserne indsættes direkte som CSS-værdi. Mellemrum i værdien repræsenteres med underscore (Tailwind erstatter dem før parsing).
For hjælpeværktøjer, der genererer flere CSS-egenskaber, modtager kun den relevante egenskab den vilkårlige værdi. p-[12px] angiver for eksempel alle fire padding-værdier til 12 px, ligesom p-4, men med en tilpasset værdi.
<!-- Width and height -->
<div class="w-[240px] h-[180px]"></div>
<!-- Custom color -->
<div class="bg-[#f0a500] text-[#2d3748]"></div>
<!-- Calc values -->
<div class="top-[calc(50%_-_24px)]"></div>
<!-- CSS variables -->
<div class="bg-[var(--primary-color)]"></div>
<!-- Custom grid -->
<div class="grid-cols-[200px_1fr_minmax(200px,_1fr)]"></div>
<!-- Spacing with custom value -->
<div class="mt-[7px] px-[18px]"></div>Hvornår skal du bruge vilkårlige værdier
Vilkårlige værdier er passende i bestemte situationer:
- Præcis placering: Et tooltip, der skal justeres nøjagtigt efter et referencepunkt (
top-[3px]) - Eksterne begrænsninger: Tilpasning til højden eller kantradius på en tredjepartskomponent
- Unikke brandfarver: En brandfarve, der ikke passer godt ind i Tailwind-paletten (
bg-[#e63946]) - Dynamiske CSS-udtryk: Værdier med
calc,min,maxellerclamp
De er IKKE passende til værdier, der hører hjemme i designsystemet — brug en temaudvidelse til dem.
<!-- Appropriate: precise positioning calculation -->
<div class="absolute top-[calc(50%_-_24px)] left-[calc(50%_-_24px)]"
aria-label="Loading">
Loading spinner centered
</div>
<!-- Appropriate: brand color not in default palette -->
<header class="bg-[#e63946] text-white">
Brand header
</header>
<!-- Inappropriate: use theme extension instead -->
<!-- <div class="w-[96px]"> Use w-24 (96px) from default scale instead! -->
<div class="w-24">Use the scale utility</div>Vilkårlige værdier kontra temaudvidelse
Når en værdi bruges flere steder i dit projekt, hører den hjemme i temaudvidelsen og ikke som en vilkårlig værdi. Når du føjer den til temaet, får den et semantisk navn, bliver konsistent og kan ændres ét sted.
En god tommelfingerregel er: Hvis du bruger en vilkårlig værdi to gange i forskellige filer, skal du flytte den til temaet. Hvis den kun forekommer én gang i en meget specifik sammenhæng, er den vilkårlige værdi fin.
// Instead of repeating w-[347px] in 5 components:
// ❌ Scattered arbitrary values
// <div class="w-[347px]">...</div> (component A)
// <div class="w-[347px]">...</div> (component B)
// <div class="w-[347px]">...</div> (component C)
// ✅ Theme extension — one source of truth
// tailwind.config.js:
module.exports = {
theme: {
extend: {
width: {
'sidebar': '347px',
},
},
},
};
// Usage:
// <div class="w-sidebar">...</div> -- consistent and namedOmkostningen ved hver vilkårlig værdi
Hver unik vilkårlig værdi genererer en unik CSS-regel. Fem forekomster af w-[347px] i den samme fil genererer kun én CSS-regel (JIT fjerner dubletter). Men w-[347px], w-[348px] og w-[349px] i forskellige komponenter genererer hver sin regel — tre separate regler for værdier, der kun adskiller sig med én pixel.
Det er omkostningen ved vilkårlige værdier: De kan modvirke den CSS-genbrug, der gør hjælpeklasser effektive. Ti lidt forskellige vilkårlige bredder genererer ti separate regler i stedet for ét delt hjælpeværktøj.
/* Each generates a separate CSS rule */
.w-\[347px\] { width: 347px; }
.w-\[348px\] { width: 348px; }
.w-\[349px\] { width: 349px; }
.top-\[calc\(50\%-24px\)\] { top: calc(50% - 24px); }
.top-\[calc\(50\%-32px\)\] { top: calc(50% - 32px); }
/* Compare: the scale utilities share values across all usages */
/* .w-24 is generated once and reused wherever w-24 appears */Syntaks for vilkårlige egenskaber
Ud over præfikser til hjælpeværktøjer understøtter Tailwinds JIT også vilkårlige CSS-egenskaber med syntaksen [property:value] — en kantet parentes, der indeholder både et CSS-egenskabsnavn og en værdi adskilt af et kolon.
Det er en nødløsning til CSS-egenskaber, som Tailwind ikke har et hjælpeværktøj til, for eksempel [mask-image:linear-gradient(...)], [scroll-snap-type:x_mandatory] eller leverandørspecifikke egenskaber. Brug det sparsomt — hvis du opdager, at du bruger mange vilkårlige egenskaber, bør du i stedet overveje at tilføje et Tailwind-plugin.
<!-- Arbitrary CSS property -->
<div class="[mask-image:linear-gradient(to_bottom,black,transparent)]
[scroll-snap-type:y_mandatory]
[-webkit-line-clamp:3]">
Content with non-utility CSS properties
</div>
<!-- Also works with variants -->
<div class="hover:[text-decoration:underline_wavy_red]
focus:[outline:2px_solid_blue]">
Custom hover/focus styles via arbitrary property
</div>Vilkårlige værdier med varianter
Vilkårlige værdier kan kombineres fuldt ud med alle variantpræfikser. Du kan kombinere responsive varianter, hover, focus, dark og andre varianter med enhver vilkårlig værdi — på samme måde som standardhjælpeværktøjer.
Det giver dig hele Tailwinds variantsystem til tilpassede værdier. En tilpasset hover-farve uden for skalaen, en responsiv tilpasset bredde eller en vilkårlig farveværdi i dark mode fungerer alt sammen problemfrit.
<!-- Responsive arbitrary width -->
<div class="w-[240px] md:w-[320px] lg:w-[400px]">
Width changes at each breakpoint
</div>
<!-- Dark mode arbitrary color -->
<div class="bg-[#f8f9fa] dark:bg-[#1a1a2e] text-[#212529] dark:text-[#f8f9fa]">
Light/dark mode with arbitrary hex colors
</div>
<!-- Hover with arbitrary value -->
<button class="bg-[#e63946] hover:bg-[#c1121f] text-white px-4 py-2 rounded-lg">
Custom brand button
</button>Vilkårlige farveværdier og opacitet
Når du bruger vilkårlige hex-farver, kan du også anvende opacitetsmodifikatoren med en skråstreg: bg-[#e63946]/50 angiver baggrunden med 50 % opacitet. Det fungerer, fordi syntaksen for opacitet med skråstreg er en JIT-funktion, der gælder, uanset om grundfarven kommer fra paletten eller er en vilkårlig værdi.
Du kan også bruge funktionerne rgba() eller hsl() direkte i parenteserne for at styre vilkårlig opacitet eller farvemodel.
<!-- Arbitrary color with opacity modifier -->
<div class="bg-[#e63946]/50">50% opacity red</div>
<div class="bg-[#e63946]/75">75% opacity red</div>
<!-- RGB function -->
<div class="bg-[rgb(230,57,70)]">RGB red</div>
<!-- HSL function -->
<div class="bg-[hsl(353,76%,55%)]">HSL red</div>
<!-- RGBA for direct alpha control -->
<div class="bg-[rgba(230,57,70,0.5)]">RGBA with alpha</div>Escape-tegn i vilkårlige værdier
Nogle tegn i vilkårlige værdier skal escapes, fordi de har en betydning i CSS eller HTML. I Tailwinds vilkårlige værdier skal du bruge underscores til mellemrum (Tailwind konverterer dem automatisk) og escape parenteser og andre specialtegn i calc() ved at bruge underscores til mellemrum i funktionen.
For URL-værdier (f.eks. baggrundsbilleder) skal du omslutte værdien med enkelte anførselstegn: bg-[url('/img/hero.png')]. Tailwind bevarer de enkelte anførselstegn i den genererede CSS.
<!-- Underscore = space in arbitrary values -->
<div class="grid grid-cols-[200px_1fr] gap-[10px_20px]">
Column gap 10px, row gap 20px
</div>
<!-- calc with underscore-spaces -->
<div class="w-[calc(100%_-_64px)]">
Full width minus 64px
</div>
<!-- URL as background image -->
<div class="bg-[url('/img/hero.jpg')] bg-cover bg-center h-64">
Hero image
</div>Gennemgå dine vilkårlige værdier
Søg med jævne mellemrum i din kodebase efter alle forekomster af vilkårlige værdier for at finde kandidater til at blive flyttet til temaet. En hurtig grep-søgning finder alle klasser med kantede parenteser i dit projekt:
Enhver værdi, der forekommer mere end to gange i forskellige filer, er en oplagt kandidat til et navngivet temaledd. En værdi, der forekommer én gang, er fin som vilkårlig værdi. Værdier, der ser ud til at høre til i en konsistent skala (som w-[350px], w-[360px], w-[370px]), viser, at et mønster med værdier uden for skalaen bør standardiseres.
# Find all arbitrary value usages in your project
grep -roh 'class="[^"]*\[[^\]]*\][^"]*"' src/ | sort | uniq -c | sort -rn
# Or more targeted: find classes with bracket notation
grep -roh '[a-z:-]*\[[^\]]*\]' src/ --include='*.{html,js,jsx,ts,tsx}' | sort | uniq -c | sort -rn
# Review high-count arbitrary values — add to theme if used 3+ timesKombinér vilkårlige værdier med hjælpeværktøjer
Vilkårlige værdier kan naturligt kombineres med standardklasser til hjælpeværktøjer i den samme klassestreng. Du kan frit blande hjælpeværktøjer fra skalaen og vilkårlige værdier — det er tilsigtet og ikke en nødløsning. Designsystmet håndterer 95 % af tilfældene med hjælpeværktøjer fra skalaen; vilkårlige værdier dækker de resterende 5 %.
Den vigtigste disciplin er at bruge hjælpeværktøjer fra skalaen først og kun ty til vilkårlige værdier, når skalaen reelt ikke indeholder det, du har brug for. Håndhæv denne disciplin i kodegennemgange, så din markup ikke bliver en samling af vilkårlige værdier uden for skalaen.
<!-- Mixing utilities and arbitrary values naturally -->
<div class="flex items-center gap-4 px-6 py-3 <!-- scale utilities -->
w-[480px] <!-- arbitrary: specific width -->
bg-[#1a1a2e] <!-- arbitrary: brand color -->
rounded-xl shadow-lg <!-- scale utilities again -->
text-sm font-medium text-white">
A card using both
</div>Hurtigt tjek
Test din forståelse af begreberne fra lektionen om Tailwind CSS Mastery.
Opsummering af lektionen
I denne lektion lærte du, at vilkårlige værdier bruger syntaksen med kantede parenteser [value] til at angive enhver CSS-værdi på ethvert hjælpeværktøj ved hjælp af JITs generering efter behov; at hver unik vilkårlig værdi genererer en unik CSS-regel, så gentagne værdier uden for skalaen på tværs af filer bør flyttes til temaet; og at underscores repræsenterer mellemrum i vilkårlige værdier (f.eks. calc(100%_-_64px)). Dette afslutter kurset i JIT og produktionsoptimering — næste emne er designtokens og systematisk tematisering.
Lær HTML med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Arbitrære værdier og deres omkostning” gratis?
Ja — hele teksten til “Arbitrære værdier og deres omkostning” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Tailwind CSS Academy-kurset, skal du opgradere til CoddyKit PRO. Tailwind CSS Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Arbitrære værdier og deres omkostning”?
Brug klammeparentesnotation som w-[347px] til enkeltstående værdier, og forstå afvejningen mellem fleksibilitet og et potentielt overfyldt stylesheet. Du øver dig i Tailwind CSS Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Tailwind CSS Academy?
Der kræves ingen tidligere erfaring. Tailwind CSS Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Arbitrære værdier og deres omkostning”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Tailwind CSS Academy-lektion?
Ja. Alle Tailwind CSS Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Sådan fungerer JIT-motoren
- Sikkerlistning af dynamiske klasser
- Analyse og reduktion af bundle-størrelse
- Arbitrære værdier og deres omkostning