Ez a dokumentum egy előző változata!
Tartalomjegyzék
Reszponzív
- Szerző: Sallai András
- Copyright © 2025, Sallai András
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
Bevezetés
Hogyan tegyük reszponzívvá az olyan adatokat, amelyeket általában táblázatban vagy táblázatszerűen jelenítünk meg?
Táblázat celláinak tördelése
Az egyik lehetőség, ha maradunk a táblázatnál, de a táblázat részeit block típusúvá alakítjuk.
A lényeg:
- style.css
@media screen and (max-width: 600px) { table, thead, tbody, th, td, tr { display: block; } }
600 pixel alatt a táblázat részeinek display értéke legyen block típus.
De így nem látszanak a határok és a táblázat fejléce is felesleges. Tegyünk még néhány kiegészítést.
- style.css
@media screen and (max-width: 600px) { table, thead, tbody, th, td, tr { display: block; } td { text-align: left; border: 1px solid #ddd; padding: 8px; } thead tr { display: none; } tbody tr { margin-bottom: 8px; } }
Mezők feliratozása
Ha szeretnénk a tördelt mezők számára mezőneveket megjeleníteni adjunk minden cellához egy data-column mezőt a megfelelő mezőnévvel.
<tbody> <tr> <td data-column="Név">Arany Ernő</td> <td data-column="Település">Szeged</td> <td data-column="Fizetés">397</td> </tr> <tr> <td data-column="Név">Taba Mária</td> <td data-column="Település">Pécs</td> <td data-column="Fizetés">395</td> </tr> </tbody>
A feliratok megjelenítése ezek után:
@media screen and (max-width: 600px) { /* ... */ td:before { content: attr(data-column); float: left; font-weight: bold; } }
Szebb tördelés
@media screen and (max-width: 600px) { table, thead, tbody, th, td, tr { display: block; } thead tr { display: none; } td { border: none; border-bottom: 1px solid #eee; position: relative; padding-left: 50%; } td:before { position: absolute; top: 6px; left: 6px; width: 45%; padding-right: 10px; white-space: nowrap; content: attr(data-column); font-weight: bold; } }
Bootstrap kártyák
Érdemes kártyákat használni táblázatok helyett. Használjuk a Card komponenst.
A kártyakomponenseket tegyük egy divbe, majd állítsunk be d-flex és felx-wrap osztályjelölöket.
<div class="d-flex flex-wrap justify-content-center"> <div class="card" style="width: 18rem;"> <img src="..." class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">Cím</h5> <p class="card-text">Leírás</p> <a href="#" class="btn btn-primary">Menjünk valahova</a> </div> </div> </div>
Angularban
Legyen Angualrban egy productList, amit szeretnénk renderelni a weboldalra. Készítsünk egy div-t, aminek a dispaly tulajdonságát flex értékre állítjuk, majd mondjuk meg, hogy tördelje a tartalmat ha szükséges a flex tulajdonság wrap-ra állításával.
<div class="d-flex flex-wrap justify-content-center"> @for(product of productList; track product.id) { <div class="card m-3" style="width: 18rem;"> <img src="{{ product.image }}" class="card-img-top" alt="{{ product.name }}" width="50px" height="80px"> <div class="card-body"> <h5 class="card-title">{{ product.name }}</h5> <p class="card-text">{{ product.description }}</p> <button class="btn btn-primary" (click)=toCart(emp) >Kosárba</button> </div> </div> } </div>