Tailwind CSS Academy · Oppitunti

Flexin kasvaminen, kutistuminen ja perusta

Hallinnoikaa flex-lapsielementtien laajenemista ja kutistumista flex-1-, flex-none-, grow-, shrink- ja basis-*-utilityillä.

Oppitunti 3/413 vaihetta

Flexin kasvaminen, kutistuminen ja perusta on ilmainen Tailwind CSS Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/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.

Miten flex-lapset määrittävät kokonsa

Oletusarvoisesti flex-lasten koko määräytyy niiden sisällön mukaan. Flexbox tarjoaa kuitenkin kolme ominaisuutta, joiden avulla voitte hallita tarkasti, miten lapset täyttävät käytettävissä olevan tilan: flex-grow määrittää, kuinka paljon ylimääräistä tilaa lapsi ottaa, flex-shrink määrittää, kuinka paljon se kutistuu tilan ollessa vähissä, ja flex-basis määrittää alkuperäisen koon ennen kasvamista tai kutistumista. Tailwind tarjoaa kaikki kolme tiiviillä apuluokilla.

flex-1: kaikki yhdessä -lyhenne

flex-1 on yleisimmin käytetty flex-koon apuluokka. Se ottaa käyttöön arvon flex: 1 1 0% — kasvaa täyttämään käytettävissä olevan tilan, kutistuu tarvittaessa ja aloittaa nollaperustasta. Käytännössä flex-1 saa jokaisen elementin ottamaan yhtä suuren osuuden säilön jäljelle jäävästä tilasta. Kaksi flex-1-sisarelementtiä saavat kumpikin 50 %, kolme kumpikin 33 %.

<!-- Two equal-width columns -->
<div class="flex gap-4">
  <div class="flex-1 bg-blue-100 p-4 rounded">Left (50%)</div>
  <div class="flex-1 bg-green-100 p-4 rounded">Right (50%)</div>
</div>

<!-- Three equal-width columns -->
<div class="flex gap-4 mt-4">
  <div class="flex-1 bg-indigo-100 p-4 rounded">A (33%)</div>
  <div class="flex-1 bg-indigo-200 p-4 rounded">B (33%)</div>
  <div class="flex-1 bg-indigo-300 p-4 rounded">C (33%)</div>
</div>

flex-auto: sisällön huomioiva kasvu

flex-auto ottaa käyttöön arvon flex: 1 1 auto — elementti kasvaa ja kutistuu, mutta aloittaa elementin luonnollisesta sisällön koosta. Toisin kuin flex-1, joka aloittaa nollasta, flex-auto säilyttää elementtien kokoerot ennen ylimääräisen tilan jakamista suhteellisesti. Käyttäkää sitä, kun haluatte sisällön huomioivan jaon tasasuuruisten osuuksien sijaan.

<!-- flex-auto: longer text gets more space -->
<div class="flex gap-2">
  <div class="flex-auto bg-blue-100 p-4 rounded">Short</div>
  <div class="flex-auto bg-green-100 p-4 rounded">Longer text content item</div>
</div>

<!-- flex-1: equal splits regardless of content -->
<div class="flex gap-2 mt-2">
  <div class="flex-1 bg-blue-100 p-4 rounded">Short</div>
  <div class="flex-1 bg-green-100 p-4 rounded">Longer text content item</div>
</div>

flex-initial: selaimen oletustoiminta

flex-initial ottaa käyttöön arvon flex: 0 1 auto — selaimen oletusarvon. Elementit eivät kasva sisältönsä kokoa suuremmiksi (grow: 0), mutta ne kutistuvat tilan ollessa vähissä (shrink: 1). Tätä käytetään oletusarvon ilmaisemiseen selkeästi tilanteessa, jossa sisarelementit käyttävät flex-1-luokkaa. Näin ensimmäinen elementti säilyy sisältönsä kokoisena sisarelementtien täyttäessä jäljelle jäävän tilan.

<!-- Sidebar fixed to content, main area takes remaining space -->
<div class="flex gap-4">
  <aside class="flex-initial w-48 bg-gray-100 p-4 rounded">
    Fixed sidebar
  </aside>
  <main class="flex-1 bg-white p-4 rounded shadow">
    Main content takes all remaining width
  </main>
</div>

flex-none: kaikkien koon muutosten estäminen

flex-none ottaa käyttöön arvon flex: none — elementti ei kasva täyttämään ylimääräistä tilaa eikä kutistu tilan ollessa vähissä. Elementti säilyy aina täsmälleen luonnollisen sisältönsä kokoisena. Käyttäkää flex-none-luokkaa kuvakkeille, avatar-kuville, tunnisteille ja kiinteän levyisille elementeille, joiden koon tulee säilyä riippumatta flex-säilön käytettävissä olevasta tilasta.

<!-- Avatar should stay fixed size, text can shrink/grow -->
<div class="flex items-center gap-3">
  <img src="avatar.jpg" class="flex-none w-12 h-12 rounded-full" alt="" />
  <div class="flex-1 min-w-0">
    <p class="font-medium text-gray-900 truncate">User name that might be very long</p>
    <p class="text-sm text-gray-500 truncate">user@example.com</p>
  </div>
  <span class="flex-none bg-green-100 text-green-700 text-xs px-2 py-1 rounded">Active</span>
</div>

grow- ja shrink-apuluokat

Yksityiskohtaisempaa hallintaa varten Tailwind tarjoaa erilliset grow-, grow-0-, shrink- ja shrink-0-apuluokat. grow sallii elementin kasvamisen (flex-grow: 1). grow-0 estää kasvamisen. shrink sallii kutistumisen (flex-shrink: 1). shrink-0 estää kutistumisen — tästä on hyötyä, kun kuvia ja kuvakkeita ei haluta kutistaa säilön ollessa liian kapea.

<!-- Logo should not shrink on small screens -->
<nav class="flex items-center gap-4">
  <img src="logo.svg" class="shrink-0 h-8 w-auto" alt="Logo" />
  <!-- Nav links can shrink -->
  <div class="flex gap-4 min-w-0">
    <a href="#" class="truncate text-sm">Products</a>
    <a href="#" class="truncate text-sm">Pricing</a>
  </div>
</nav>

basis-*: alkuperäisen koon määrittäminen

basis-* määrittää flex-elementin alkuperäisen koon ennen kasvamista tai kutistumista. Se vastaa CSS:n flex-basis-ominaisuutta. Voitte käyttää Tailwindin välistysarvoja (basis-4 = 16px), prosenttiarvoja (basis-1/2 = 50 %) tai avainsanoja (basis-full = 100 %). Kun kolmelle sisarelementille asetetaan basis-1/3 ja grow, tuloksena on kolmisarakkeinen asettelu, joka alkaa yhtä suurista kolmanneksista ja täyttää käytettävissä olevan tilan.

<!-- Three columns with basis -->
<div class="flex gap-4">
  <div class="basis-1/3 grow bg-blue-100 p-4 rounded">A (starts at 33%)</div>
  <div class="basis-1/3 grow bg-green-100 p-4 rounded">B (starts at 33%)</div>
  <div class="basis-1/3 grow bg-red-100 p-4 rounded">C (starts at 33%)</div>
</div>

basis-0 ja basis-auto

basis-0 ja basis-auto tuottavat hienovaraisesti erilaisen tuloksen yhdessä grow-luokan kanssa. basis-0-luokkaa käytettäessä kaikki elementit aloittavat nollaleveydestä ja kasvavat pelkästään flex-grow-suhteidensa perusteella, mikä johtaa tilan tasaiseen jakamiseen. basis-auto-luokkaa käytettäessä elementit ottavat ensin sisältönsä leveyden, minkä jälkeen ylimääräinen tila jaetaan, jolloin jako on suhteessa sisällön kokoon.

/* flex-1 = flex: 1 1 0%   → basis-0 + grow + shrink */
/* flex-auto = flex: 1 1 auto → basis-auto + grow + shrink */

<!-- These produce different column widths when content differs:
     flex-1: equal columns
     flex-auto: content-proportional columns -->

Käytännössä: pääsisältö ja kiinteä sivupalkki

Klassisessa kaksipaneelisessa asettelussa sivupalkissa käytetään flex-none w-64-luokkia (kiinteä 256px:n leveys) ja pääsisältöalueella flex-1-luokkaa (ottaa kaiken muun tilan). Näin sivupalkki ei koskaan kasva tai kutistu, kun taas sisältöalue täyttää 100 % jäljelle jäävästä tilasta. Tämä on hallintapaneelien ja ylläpitokäyttöliittymien asettelujen perusta.

<div class="flex h-screen">
  <aside class="flex-none w-64 bg-gray-900 text-white p-4">
    <h2 class="font-bold text-lg mb-4">Sidebar</h2>
    <nav class="space-y-1">
      <a href="#" class="block px-3 py-2 rounded hover:bg-gray-700 text-sm">Dashboard</a>
    </nav>
  </aside>
  <main class="flex-1 overflow-auto bg-gray-50 p-8">
    <h1 class="text-2xl font-bold text-gray-900">Dashboard</h1>
  </main>
</div>

Käytännössä: responsiiviset ruudukkokortit flex-1-luokalla

Kun yhdistätte flex flex-wrap- ja flex-1-luokat sekä min-w-*-rajoitteen, saatte responsiivisen ruudukon, joka säätää sarakkeiden määrää automaattisesti käytettävissä olevan leveyden mukaan. Jokainen kortti vie vähintään min-w-64-luokan määrittämän leveyden, ja kortit laajenevat täyttämään rivin flex-1-luokan avulla. Kun kortti ei enää mahdu riville, se siirtyy seuraavalle riville — erillisiä breakpoint-määrityksiä ei tarvita.

<!-- Auto-responsive card grid -->
<div class="flex flex-wrap gap-4">
  <div class="flex-1 min-w-64 bg-white rounded-xl shadow p-6">
    <h3 class="font-bold">Card A</h3>
  </div>
  <div class="flex-1 min-w-64 bg-white rounded-xl shadow p-6">
    <h3 class="font-bold">Card B</h3>
  </div>
  <div class="flex-1 min-w-64 bg-white rounded-xl shadow p-6">
    <h3 class="font-bold">Card C</h3>
  </div>
</div>

Järjestys: visuaalinen uudelleenjärjestäminen

Tailwindin order-*-apuluokat muuttavat flex-elementtien visuaalista näyttöjärjestystä muuttamatta niiden järjestystä DOM-puussa. order-first siirtää elementin alkuun, order-last siirtää sen loppuun, ja order-1–order-12 tarjoavat yksityiskohtaisen hallinnan. Tämä on hyödyllistä responsiivisessa uudelleenjärjestämisessä: mobiilissa sisällön jälkeen näkyvä sivupalkki voidaan siirtää visuaalisesti sisällön edelle työpöytänäkymässä käyttämällä md:order-first-luokkaa.

<!-- Mobile: image below text. Desktop: image on the right -->
<div class="flex flex-col md:flex-row gap-8">
  <div class="md:order-last flex-1">
    <img src="product.jpg" class="w-full rounded-xl" alt="" />
  </div>
  <div class="flex-1">
    <h2 class="text-2xl font-bold">Product Headline</h2>
    <p class="text-gray-500 mt-2">Description text here.</p>
  </div>
</div>

Pikatarkistus

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

Oppitunnin yhteenveto

Tässä oppitunnissa opitte seuraavaa: flex-1 saa lapset ottamaan yhtä suuret osuudet käytettävissä olevasta tilasta, flex-none estää elementtiä kasvamasta tai kutistumasta, joten se säilyy luonnollisen kokoisena, ja grow-, shrink- ja basis-*-luokat tarjoavat yksityiskohtaisen hallinnan kullekin ulottuvuudelle erikseen. Seuraavaksi käsittelemme ylivuotoa flex-wrap-luokalla ja luomme yhtenäiset välit flex-elementtien välille.

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 ”Flexin kasvaminen, kutistuminen ja perusta” ilmainen?

Kyllä – oppitunnin ”Flexin kasvaminen, kutistuminen ja perusta” 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 ”Flexin kasvaminen, kutistuminen ja perusta”?

Hallinnoikaa flex-lapsielementtien laajenemista ja kutistumista flex-1-, flex-none-, grow-, shrink- ja basis-*-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 3/4.

Kuinka kauan ”Flexin kasvaminen, kutistuminen ja perusta”-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. Flexin ja suunnan käyttöönotto
  2. Sisällön perustelu ja kohteiden tasaus
  3. Flexin kasvaminen, kutistuminen ja perusta
  4. Rivitys ja väli
← Takaisin: Tailwind CSS Academy