Tailwind CSS Academy · Oppitunti

Painikkeiden muunnelmat ja tilat

Luokaa primary-, secondary-, outline- ja ghost-painikemuunnelmia hover-, focus-, active- ja disabled-tiloineen Tailwind-utilityillä.

Oppitunti 1/413 vaihetta

Painikkeiden muunnelmat ja tilat on ilmainen Tailwind CSS Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tailwind CSS Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tailwind CSS Academy-kurssilla on yhteensä 4 oppituntia.

Miksi painikevariaatioilla on merkitystä

Painikkeet ovat sivun interaktiivisimpia elementtejä, ja käyttäjät luottavat visuaalisiin vihjeisiin ymmärtääkseen niiden tarkoituksen. Painikevariaatiot ilmaisevat toiminnon merkityksen: ensisijainen painike käynnistää päätoiminnon, toissijainen painike tarjoaa vaihtoehdon ja outline- tai ghost-painike tarjoaa hienovaraisemman vaihtoehdon.

Tailwindin avulla toteutat kaikki nämä kirjoittamatta mukautettua CSS:ää. Kukin variaatio on vain erilainen yhdistelmä apuluokkia, joita käytetään samassa <button>-elementissä.

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

Ensisijaisen painikkeen rakenne

Ensisijainen painike käyttää yksiväristä taustaa saadakseen mahdollisimman paljon huomiota. Rakenne yhdistää täytteen apuluokat, taustavärin, valkoisen tekstin ja pyöristettyjen kulmien luokan.

hover:bg-blue-700 tummentaa painiketta hiiren osoittimen ollessa sen päällä ja antaa selkeän palautteen elementin interaktiivisuudesta. font-semibold-luokka lisää tekstin visuaalista painokkuutta.

<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>

Toissijaiset ja outline-variaatiot

Toissijainen painike käyttää vaaleampaa taustaa ilmaistakseen vähemmän korostettua toimintoa. Outline-painike poistaa täytteen kokonaan ja näyttää vain reunuksen käyttämällä läpinäkyvällä taustalla luokkia border border-blue-600 text-blue-600.

Hover-tilassa outline-painikkeen voi täyttää vaalealla taustalla, kuten hover:bg-blue-50-luokalla. Näin saat visuaalista palautetta ilman, että lähellä olevaa ensisijaista painiketta korostetaan liikaa.

<!-- 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-painikkeen variaatio

Ghost-painikkeella ei oletusarvoisesti ole taustaa eikä näkyvää reunusta, joten se näyttää muotoillulta tekstiltä, kunnes käyttäjä on vuorovaikutuksessa sen kanssa. Tämä variaatio sopii hyvin vähän korostusta vaativiin toimintoihin, kuten peruuttamiseen tai sulkemiseen.

hover:bg-gray-100 tuo hover-tilassa näkyviin hienovaraisen täytteen, ja text-gray-700 pitää tekstin luettavana viemättä huomiota ensisijaisilta toiminnoilta.

<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>

Tuhoavat ja vaaralliset painikkeet

Tuhoava painike käyttää punaisia sävyjä varoittamaan käyttäjää peruuttamattomista toiminnoista, kuten tietojen poistamisesta. Väri ilmaisee vaaran ilman, että käyttäjän tarvitsee lukea tekstiä tarkasti.

Yhdistä bg-red-600 vahvaan hover-tilaan hover:bg-red-700 ja yhdistä painikkeeseen aina vahvistusikkuna tahattomien toimintojen estämiseksi.

<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>

Käytöstä poistetun tilan tyylitys

Kun painike ei ole vielä käytettävissä — esimerkiksi lomakkeen lähetyksen aikana — tästä tulisi ilmoittaa visuaalisesti käytöstä poistetulla tilalla. Tailwind tarjoaa tähän tarkoitukseen disabled:-variaation etuliitteen.

Käytä luokkia disabled:opacity-50 disabled:cursor-not-allowed himmentämään painiketta ja muuttamaan osoitinta. Näin käyttäjälle ilmoitetaan, ettei painiketta voi napsauttaa. Käytä näiden luokkien kanssa aina myös HTML:n disabled-attribuuttia asianmukaisen saavutettavuuden varmistamiseksi.

<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>

Lataustila latausympyrällä

Yleinen ratkaisu on näyttää painikkeen sisällä latausympyrä, kun asynkroninen toiminto suoritetaan loppuun. Voit käyttää SVG-kuvakkeessa ennen tekstiä Tailwindin animate-spin-luokkaa.

Käytä painikkeessa luokkia inline-flex items-center gap-2 latausympyrän ja tekstin kohdistamiseen vierekkäin. Lisää latauksen ajaksi myös pointer-events-none estämään lähetyksen toistuminen.

<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>

Painikkeiden koot Tailwindilla

Eri tilanteet edellyttävät erikokoisia painikkeita. Pieni painike sopii tiiviisiin käyttöliittymiin, kuten taulukoihin, kun taas erittäin suuri painike toimii tehokkaana päätoimintakehotteena.

Määritä koot muuttamalla arvoja px-*, py-* ja text-*. Yleinen asteikko on sm (px-3 py-1.5 text-sm), md (px-5 py-2.5 text-base) ja 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>

Kuvakepainikkeet ja kuvake–teksti-painikkeet

Kuvakepainikkeissa käytetään vain kuvaketta ilman näkyvää tekstiä, joten niillä on oltava saavutettava aria-label-attribuutti. Muotoile painike neliöksi käyttämällä yhtä suurta täytettä joka puolella: p-2 luo kuvakkeen ympärille tiiviin napsautettavan alueen.

Kuvake–teksti-painikkeissa käytä luokkia inline-flex items-center gap-2 SVG-kuvakkeen kohdistamiseen pystysuunnassa tekstin kanssa fonttikoosta riippumatta.

<!-- 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>

Täysleveät painikkeet ja painikeryhmät

Täysleveä painike käyttää w-full-luokkaa levitäkseen säilönsä koko leveydelle. Tämä on yleistä mobiiliasetteluissa ja lomakkeiden lähetyksissä. justify-center varmistaa, että teksti pysyy keskitettynä.

Painikeryhmä yhdistää useita painikkeita vierekkäin. Poista keskimmäisten painikkeiden reunojen pyöristys ja yhdistä reunukset negatiivisilla marginaaleilla: first:rounded-l-lg last:rounded-r-lg border-r-0 luo yhtenäisen kapselimaisen ulkoasun.

<!-- 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>

Yhtenäiset kohdistusrenkaat saavutettavuutta varten

Jokainen painikevariaatio tarvitsee näkyvän kohdistusilmaisimen näppäimistöä käyttäville. Tailwindin focus:ring-*-apuohjelmat piirtävät painikkeen reunuksen ulkopuolelle värillisen renkaan vaikuttamatta asetteluun.

Hyvä rakenne on focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2. ring-offset-2 lisää painikkeen ja renkaan väliin pienen valkoisen välin, mikä erottaa renkaan värillisestä taustasta. Käytä focus-visible:ring-2-luokkaa, jos haluat näyttää renkaan vain näppäimistöllä navigoitaessa.

<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>

Pikatarkistus

Testaa, miten hyvin ymmärrät tämän oppitunnin Tailwind CSS Mastery -käsitteet.

Oppitunnin kertaus

Tässä oppitunnissa opit, että ensisijaiset, toissijaiset, outline- ja ghost-painikevariaatiot rakennetaan yhdistämällä tausta-, reunus- ja tekstiväriapuohjelmia; interaktiiviset tilat, kuten hover, aktiivinen, käytöstä poistettu ja lataus, käsitellään Tailwindin variaatioiden etuliitteillä; ja kohdistusrenkaat, joissa käytetään focus-visible:ring-2-luokkaa, varmistavat näppäimistösaavutettavuuden häiritsemättä hiirellä tapahtuvaa käyttöä. Seuraavaksi tutustumme korttikomponenttien rakenteisiin.

Aloita maksutta

Opi HTML tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Painikkeiden muunnelmat ja tilat” ilmainen?

Kyllä – oppitunnin ”Painikkeiden muunnelmat ja tilat” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tailwind CSS Academy-kurssin, päivitä CoddyKit PROhon. Tailwind CSS Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Painikkeiden muunnelmat ja tilat”?

Luokaa primary-, secondary-, outline- ja ghost-painikemuunnelmia hover-, focus-, active- ja disabled-tiloineen Tailwind-utilityillä. Harjoittelet Tailwind CSS Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Tailwind CSS Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Tailwind CSS Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Painikkeiden muunnelmat ja tilat”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Tailwind CSS Academy-oppitunnilla?

Kyllä. Jokainen Tailwind CSS Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Painikkeiden muunnelmat ja tilat
  2. Korttikomponenttien mallit
  3. Badge- ja tag-komponentit
  4. Komponenttien yhdistäminen käyttöliittymässä
← Takaisin: Tailwind CSS Academy