← Úroveň 1 – Staviteľ

Lekcia 10 z 12 ⏱ 35 minút

Karty a fotogaléria

Postav dve najobľúbenejšie časti moderných webov: obsahové karty a mriežku fotiek.

Ukážem ti: karta

Karta je biely obdĺžnik so tieňom, ktorý drží obrázok a text spolu. Poznáš ich z YouTube, Netflixu a internetových obchodov. Karta je len box s pár vlastnosťami:

<div class="card">
  <img src="images/photo.jpg" alt="Photo description">
  <h3>Card heading</h3>
  <p>Short text for the card.</p>
</div>
.card {
  background-color: white;
  border-radius: 12px;
  padding: 16px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

Dve nové veci:

Ukážem ti: karty vedľa seba

Teraz trik, ktorý už poznáš – flexbox. Zabaľ karty do boxu a nastav ho na flex:

<div class="cards">
  <div class="card">…</div>
  <div class="card">…</div>
  <div class="card">…</div>
</div>
.cards {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

.cards .card {
  flex: 1;             /* karty si férovo rozdelia dostupný priestor */
  min-width: 200px;    /* ale žiadna nebude užšia ako 200px */
}

flex-wrap: wrap + min-width = na počítači karty sedia vedľa seba, na telefóne sa poskladajú. Práve si postavil responzívny web – taký, ktorý sa prispôsobí každej obrazovke.

Teraz ty 💪

Pridaj na svoju webovú stránku sekciu s kartami – aspoň tri vedľa seba. Čo na nich bude, závisí od tvojho projektu:

🏫 Webová stránka školy – riešenie (karty učiteľov)
<h2>Our Teachers</h2>
<div class="cards">
  <div class="card">
    <h3>Ms. Turner</h3>
    <p>4th grade homeroom. Teaches English and art. Loves cats.</p>
  </div>
  <div class="card">
    <h3>Mr. Bennett</h3>
    <p>Math and P.E. Runs the floorball club.</p>
  </div>
  <div class="card">
    <h3>Principal Adams</h3>
    <p>Running the school for 10 years. Plays the piano.</p>
  </div>
</div>
🙋 Osobná webová stránka – riešenie (karty koníčkov)
<h2>My Hobbies</h2>
<div class="cards">
  <div class="card">
    <img src="images/soccer.jpg" alt="Me during a match">
    <h3>Soccer</h3>
    <p>I play forward for the youth team. 12 goals this year!</p>
  </div>
  <div class="card">
    <img src="images/minecraft-build.jpg" alt="My castle in Minecraft">
    <h3>Minecraft</h3>
    <p>I build huge castles. This one took a month.</p>
  </div>
  <div class="card">
    <h3>Coding</h3>
    <p>I'm building this very website right now. And this is just the start.</p>
  </div>
</div>
🌍 Cestovný denník – riešenie (karty výletov)
<h2>Our Trips</h2>
<div class="cards">
  <div class="card">
    <img src="images/mountains.jpg" alt="View from the summit">
    <h3>The Mountains</h3>
    <p>A three-day hike. Best part: wild berries and the lookout tower.</p>
  </div>
  <div class="card">
    <img src="images/sea.jpg" alt="A bay in Greece">
    <h3>Greece</h3>
    <p>A week at the beach. We saw dolphins!</p>
  </div>
  <div class="card">
    <img src="images/dc.jpg" alt="View from a monument in Washington, D.C.">
    <h3>Washington, D.C.</h3>
    <p>Museums, monuments, and way too much walking.</p>
  </div>
</div>
⚽ Webová stránka klubu – riešenie (karty hráčov)
<h2>Roster</h2>
<div class="cards">
  <div class="card">
    <h3>Jake · goalkeeper 🧤</h3>
    <p>Team captain. 5 clean sheets this season.</p>
  </div>
  <div class="card">
    <h3>Owen · midfield ⚡</h3>
    <p>Fastest player on the team. 8 assists.</p>
  </div>
  <div class="card">
    <h3>Tom · forward 🎯</h3>
    <p>Top scorer. 14 goals this season.</p>
  </div>
</div>

Rovnaké CSS funguje pre každý projekt:

.cards {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

.cards .card {
  flex: 1;
  min-width: 200px;
}

.card {
  background-color: white;
  border-radius: 12px;
  padding: 16px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

Bonus: fotogaléria

Máš veľa fotiek? Mriežka fotiek je ešte jednoduchšia – len použij aspect-ratio a object-fit, aby boli všetky rovnako veľké:

<div class="gallery">
  <img src="images/p1.jpg" alt="…">
  <img src="images/p2.jpg" alt="…">
  <img src="images/p3.jpg" alt="…">
  <img src="images/p4.jpg" alt="…">
</div>
.gallery {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.gallery img {
  width: 180px;
  aspect-ratio: 1;      /* štvorec */
  object-fit: cover;    /* fotka vyplní štvorec a oreže sa, neroztiahne */
}

Skontroluj sa: Tvoja webová stránka má karty s tieňmi vedľa seba. Zmenši okno prehliadača na šírku telefónu – karty sa poskladajú. Tomu hovorí responzívny dizajn a práve si ho zvládol.

Čo si z tejto lekcie odnášaš