Siirry sisältöön

Teema ja mukauttaminen

Tailwind-teema on litteä joukko CSS-muuttujia. Laajenna tai korvaa se syöte-CSS:si @theme { … }-lohkolla, käytä arvoja CSS-sisällä teeman funktioiden kautta ja lue ratkaistut arvot takaisin kohteesta PHP. Erillistä JavaScript-asetustiedostoa ei ole — teema sijaitsee kokonaan CSS-sisällössä.

@theme-lohko

@theme-lohko määrittää suunnittelutokenit CSS-mukautettuina ominaisuuksina. Kunkin muuttujan nimiavaruuden etuliite (--color-*, --font-*, --breakpoint-*, --spacing-*, …) kertoo, mitä apuohjelmia ja muunnelmia token ohjaa Tailwind-järjestelmässä.

PHP
use TailwindPHP\tw;

$css = tw::generate('<div class="bg-brand text-brand xs:flex">', '
    @import "tailwindcss";

    @theme {
        --color-brand: #3b82f6;
        --font-heading: "Inter", sans-serif;
        --breakpoint-xs: 20rem;
        --spacing-huge: 10rem;
    }
');

Jokainen token rekisteröi apuohjelmat omaan nimiavaruuteensa. Yllä oleva esimerkki ottaa käyttöön bg-brand, text-brand ja border-brand, font-heading-perheen, responsiivisen muunnelman xs: sekä välistysarvot p-huge/m-huge — mutta ne luodaan vain, kun luokka esiintyy sisällössäsi.

CSS
/* bg-brand resolves to the theme variable */
:root, :host {
  --color-brand: #3b82f6;
}
.bg-brand {
  background-color: var(--color-brand);
}

--breakpoint-xs-token rekisteröi suoraan muunnelman xs::

CSS
@media (min-width: 20rem) {
  .xs\:flex {
    display: flex;
  }
}

Yleiset nimiavaruudet

Nimiavaruus Tuottaa
--color-* bg-*, text-*, border-*, fill-*, stroke-*, …
--font-* font-*-perheen apuohjelmat
--text-* text-*-fonttikokoapuohjelmat
--breakpoint-* responsiiviset muunnelmat (sm:, md:, mukautettu xs:)
--spacing-* nimetyt välistysarvot (p-huge, m-huge)
--radius-* rounded-*-apuohjelmat
--shadow-* shadow-*-apuohjelmat

Nimiavaruuden tyhjentäminen

Nimiavaruuden jokerimerkin asettaminen arvoon initial poistaa Tailwind-oletukset kyseisestä nimiavaruudesta ennen omien tokeniesi lisäämistä. Näin voit aloittaa puhtaalta pohjalta:

CSS
@theme {
    /* Drop every default color, then define only what you need */
    --color-*: initial;
    --color-brand: #3b82f6;
    --color-ink: #111827;
}

--*: initial; tyhjentää koko teeman. Arvo initial tavallisessa avaimessa (--color-red-500: initial;) poistaa vain kyseisen tokenin. initial hyväksytään -*-jokerimerkin arvoksi; muut arvot aiheuttavat virheen.

Teema-arvojen lukeminen kohteessa CSS

theme()

Vanha theme()-funktio lukee arvon piste-erottelulla v3-tyylisistä nimiavaruuksista. Se ratkaisee tokenin arvon käännösaikana, joten sitä voi käyttää missä tahansa arvoa odotetaan — myös mukautetuissa säännöissä ja muissa määrityksissä.

PHP
$css = tw::generate('<div class="callout">', '
    @import "tailwindcss";
    .callout { color: theme(colors.red.500); }
');
CSS
.callout {
  color: oklch(63.7% .237 25.331);
}

Pistepolut vastaavat taustalla olevia muuttujia (colors.red.500 → --color-red-500, fontFamily.sans → päätteetön perhe). Läpinäkyvyysmuunnin on tuettu: theme(colors.red.500 / 50%). Varatunnisteen voi antaa toisena argumenttina: theme(colors.brand, #000). Jos polkua ei voida ratkaista eikä varatunnistetta anneta, sitä käyttävä ehdokas hylätään.

--theme()

--theme() lukee teeman muuttujan sen CSS mukautetun ominaisuuden nimen perusteella ja palauttaa oletuksena var()-viitteen, joten arvo pysyy yliajettavissa suorituksen aikana:

CSS
.btn { color: --theme(--color-brand); }
/* → color: var(--color-brand); */

Lisää inline, jotta ratkaistu arvo korvataan var()-viitteellä: --theme(--color-brand inline). Toinen argumentti on varatunniste (--theme(--color-brand, #000)), ja initial-varatunniste käsitellään erityisesti — se lisätään sisäkkäisiin var()-viitteisiin, jotka itse ratkeavat arvoon initial. At-säännön (@media, @container) sisällä --theme() ratkaistaan aina suoraan, koska var() ei kelpaa näissä esiosissa.

--spacing()

--spacing(n) kertoo teeman perusvälistysyksikön (--spacing) arvolla n:

CSS
@utility my-gap { gap: --spacing(4); }
/* → gap: calc(var(--spacing) * 4); */

Kerroin 1 ratkeaa itse perusmuuttujaksi (--spacing(1) → var(--spacing), jonka myös p-1 tuottaa), ja 0 pelkäksi nollapituiseksi arvoksi.

Tämä on sama laskutoimitus, jota sisäänrakennetut välistysapuohjelmat käyttävät, joten mukautetut arvot pysyvät yhdenmukaisina seuraavien kanssa: p-4, m-4 ja muut vastaavat.

--alpha()

--alpha(color / opacity) lisää väriin peittävyyden color-mix()-arvolla oklab-väriavaruudessa:

CSS
@utility tint { color: --alpha(var(--color-red-500) / 50%); }
CSS
.tint {
  color: #fb2c3680;
}
@supports (color: color-mix(in lab, red, red)) {
  .tint {
    color: color-mix(in oklab, var(--color-red-500) 50%, transparent);
  }
}

Muoto color-mix() pysyy yliajettavissa suorituksen aikana; sitä edeltävä staattinen, teeman arvosta laskettu varatunniste toimii selaimissa, jotka eivät tue ominaisuutta color-mix(). Poista varatunniste käytöstä valinnan polyfills avulla: tw::compile().

Peittävyyden ja color-mix()-muuntimen ketjuttaminen → oklab()

Peittävyysmuuntimet yhdistyvät. Kun arvoon, jonka peittävyys on jo 50 %, lisätään 50 %, tulokseksi tulee 25 % oklabissa laskettuna. Kun peittävyysmuunnin kohdistuu staattiseen väriin, TailwindPHP yksinkertaistaa lausekkeen color-mix(in oklab, …) konkreettiseksi oklab()-arvoksi — samalla tavoin kuin lightningcss tekee alkupään Tailwind-työkaluketjussa — kun taas dynaamiset värit (jotka ovat edelleen muodon var() sisällä) säilyttävät muodon color-mix(), jotta ne pysyvät yliajettavissa suorituksen aikana.

Teeman arvojen lukeminen kohteesta PHP

Kolme käyttötapaa palauttaa ratkaistut teema-arvot PHP-taulukoina. Kukin ottaa valinnaisen syötteen CSS merkkijonona (oletus @import "tailwindcss";), ja on käytettävissä myös kääntäjäinstanssissa.

PHP
use TailwindPHP\tw;

tw::colors();
// ['red-500' => 'oklch(63.7% .237 25.331)', 'blue-500' => 'oklch(62.3% .214 259.815)', ...]

tw::breakpoints();
// ['sm' => '40rem', 'md' => '48rem', 'lg' => '64rem', 'xl' => '80rem', '2xl' => '96rem']

tw::spacing('@import "tailwindcss"; @theme { --spacing-huge: 10rem; }');
// ['huge' => '10rem']

Anna CSS-merkkijono, jotta arvot luetaan mukautetusta teemasta:

PHP
tw::colors('@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');
// [..., 'brand' => '#3b82f6']

tw::breakpoints('@import "tailwindcss"; @theme { --breakpoint-xs: 20rem; }');
// ['sm' => '40rem', ..., '2xl' => '96rem', 'xs' => '20rem']

TailwindCSS 4 käyttää yhtä --spacing-perusarvoa --spacing-*-asteikon sijaan, joten tw::spacing() palauttaa vain määrittelemäsi mukautetut --spacing-*-tunnisteet. Samat metodit ovat käytettävissä kääntäjäinstanssista: $compiler->colors(), $compiler->breakpoints(), $compiler->spacing(). Katso täydelliset allekirjoitukset kohdasta API.

Seuraavat vaiheet

  • Direktiivit — @apply, @utility, @custom-variant, @layer.
  • Tuonnit — @import, virtuaalimoduulit ja Preflight.
  • API — kaikki käyttö- ja tarkastusmenetelmät.