Ebben a leckében megismerkedünk a táblázatok létrehozásának módjával, a cellák összevonásánának különböző módjaival.
Táblázatokat gyakran használunk a szövegszerkesztési feladatok során is, hogy az adatokat átlátható módon, srokoba és oszlopokba rendezveprezentáljuk. A weblapkészítés során a táblázatokat gyakran arra is használták, hogy az oldal struktúráját ezzel alakítsák ki. Például a táblázat első sora volt a fejléc, a második sor két cellából állt, a bal oldali tartalmazta a menüt, a jobb oldali a tartalmat, és így tovább. A stíluslapokban rejlő lehetőségek ma már nem indokolják, hogy az oldal struktúrájának kialakítására, pusztán prezentációs célokból használjuk a táblázatokat, ez a megoldás ma már nem megfelelő. Vannak azonban olyan esetek, amikor természetesen nagyon előnyös a táblázatok használata.
Nézzük akkor a lehetőségeket sorjában, konkrét példákon bemutatva, csak ezek után térünk ki az egyes tageknél használt speciális attribútumok szerepére és használati módjára.
Mielőtt az egyes tagek szerepét részletesebben bemutatjuk, nézzünk egy egyszerűbb példát, amin jól látszik, hogy ennek a négy tagnek mi a szerepe a táblázat kialakításában!
A táblázat megadása a <table> tag használatával lehetséges. A <table> és </table> tageken belül a <tr> és </tr> elemek között adhatjuk meg a táblázat sorait. A <td> elem a sorokon belüli adatcellák létrehozására szolgál. Az egyes sorok/oszlopok fejléceit a <th> tagek között adhatjuk meg, amelyek majd kiemelve (félkövér) jelennek meg alapesetben.
Példa - Egyszerűbb táblázat felépítés – Országok és fővárosaik
Ország | Főváros |
---|---|
Afganisztán | Kabul |
Albánia | Tirana |
Algéria | Algír |
<table> <!-- ez lesz az első sor a fejléc elemekkel--> <tr> <th>Ország</th> <th>Főváros</th> </tr> <!-- itt van az első sor vége--> <!-- itt kezdődik a második sor --> <tr> <td>Afganisztán</td> <td>Kabul</td> </tr> <!-- ez a harmadik sor --> <tr> <td>Albánia</td> <td>Tirana</td> </tr> <tr> <td>Algéria</td> <td>Algír</td> </tr> </table>
Nagyon fontos, hogy a táblázatok fejléc elemeit ne egyszerűen csak vizuálisan emeljük ki (mondjuk félkövér megjelenítéssel), hanem a <th> elemet használjuk erre a célra!
A vak látogatók számára egy bonyolultabb táblázat áttekintése nem egyszerű egy képernyőolvasó programmal, ezért mindent meg kell tennünk annak érdekében, hogy a táblázatokat minél precízebb módon adjuk meg a HTML5-ös tagek és paraméterek segítségével.
Majd később látni fogjuk, hogy a táblázatnak címet adhatunk, leírhatjuk a rövid összefoglalóját, a fejlécek esetén megmondhatjuk, hogy az egy sorra, vagy oszlopra vonatkozik, és így tovább.
Először felolvassa a program, hogy hány sorból és oszlopból áll a táblázat, majd elkezdi felolvasni a tartalmát. Utána az hallható, hogy a táblázatcellák között elkezdtünk navigálni, és mindig az adott cella (és fejléc) tartalmát olvassa fel a program.
Fejlesszük tovább az előző táblázatunkat! Legyen egy újabb oszlopa is, amelyben az ország népességét is feltüntetjük.
Adjunk egy feliratot a táblázatnak, amely jól leírja a tartalmát. Ezt a <caption> taggek tudjuk megtenni. Ez az elem közvetlenül a <table> elem után kell, hogy álljon, vagyis a <table> elem első gyereke kell, hogy legyen.
<table> <caption>Országok fővárosa és népessége</caption> <!-- táblázat kódjának folytatása -->
Mivel most egy országhoz több adat is tartozik, növelhetnénk a táblázat áttekinthetőségét, ha magukat az országneveket tartalmazó cellákat is fejléccellaként adnánk meg.
Vagyis a táblázatunk így jelenne meg:
Példa - <Caption> megadása és scope paraméter használata
Ország | Főváros | Népesség |
---|---|---|
Afganisztán | Kabul | 25 500 100 fő |
Albánia | Tirana | 2 831 741 fő |
Algéria | Algír | 37 100 000 fő |
A fenti példában láthatjuk, hogy bizonyos fejléccellák oszlopokra (Főváros, Népesség), mások viszont (az országnevek) sorokra vonatkoznak. Ez egy látó számára teljesen egyértelmű, sőt az is könnyen leolvasható, hogy a fejlécek metszéspontjában (pl. Algéria és Népesség) milyen adat található.
Egy képernyőolvasó programot használó vak felhasználó nem tud abból kiindulni, hogy mi látható a képernyőn, ezért annak érdekében, hogy képernyőolvasóval is azonosítani lehessen azt, hogy egy adott cella milyen fejléccellák metszéspontjaiban találhatók, a fejlécelemeknél le kell írnunk, hogy azok egy sorra, vagy egy oszlopra érvényesek!
Erre találták ki a scope paramétert.
A th tag esetén a scope attribútummal adhatjuk meg, hogy az adott fejléc egy oszlopra (scope="col"), vagy egy adott sorra (scope="row") vonatkozik.
Ahhoz, hogy a táblázat cellái körül szegély is megjelenjen, használhatjuk a border paramétert a <table> tag esetén. Ennek 1 az értéke, ha szegélyt akarunk megjeleníteni, és üresen kell hagyni, ha nem élünk ezzel a vizuális megjelenéssel.
Stíluslapokkal sokkal esztétikusabban tudjuk formázni a táblázatokat, szebb szegélyeket is alkalmazhatunk, erre később nézünk példákat.
<table border="1"> <caption>Országok fővárosa és népessége</caption> <tr> <th scope="col">Ország</th> <th scope="col">Főváros</th> <th scope="col">Népesség</th> </tr> <tr> <th scope="row">Afganisztán</th> <td>Kabul</td> <td>25 500 100 fő</td> </tr> <tr> <th scope="row">Albánia</th> <td>Tirana</td> <td>2 831 741 fő</td> </tr> <tr> <th scope="row">Algéria</th> <td>Algír</td> <td>37 100 000 fő</td> </tr> </table>
Hallható, hogy a szóközzel való tagolás a számoknál nem ad jó eredményt, mert így a számokat külön-külön olvassa fel a program.
A konkrét példánkban csak egy pár sorból álló táblázatot adtunk meg, de ha a világ összes országának adatait felsorolnánk, akkor már egy hatalmas táblázattal lenne dolgunk. Egy ilyen, hosszabb táblázat esetén már érdemes kifinomultabb struktúrát alkalmaznunk.
A táblázat sorait fejlécekbe <thead>, láblécekbe <tfoot>, illetve törzsbe <tbody> szervezhetjük. Ez a fajta felosztás lehetővé teszi a böngészőprogramoknak, hogy a táblázat törzsét különválasszák a fejléctől és lábléctől. Ennek előnye például az lehet, hogy hosszabb táblázatok nyomtatásánál a fejléc és lábléc elemek minden kinyomtatott oldalon szerepelni fognak (amennyiben a böngésző támogatja ezt a funkciót).
Először a fejlécet (<thead>) kell megadnunk, azt követően pedig a láblécet (<tfoot>). Ezután adhatjuk meg a táblázat törzsét (<tbody>).
Példa - Táblázat tagolása fejlécre, láblécre és törzsre
Ország | Főváros |
---|---|
Afganisztán | Kabul |
Albánia | Tirana |
Algéria | Algír |
<table border="1"> <caption>Országok fővárosa és népessége</caption> <thead> <tr> <th scope="col">Ország</th> <th scope="col">Főváros</th> <th scope="col">Népesség</th> </tr> </thead> <tfoot> <tr> <td>Forrás: Wikipedia</td> <td></td> <td></td> <!-- Itt igazából egy cellára lenne szükség, így ezeket össze kellene vonni. Erre nézünk példát később. --> </tr> </tfoot> <tbody> <tr> <th scope="row">Afganisztán</th> <td>Kabul</td> <td>25 500 100 fő</td> </tr> <tr> <th scope="row">Albánia</th> <td>Tirana</td> <td>2 831 741 fő</td> </tr> <tr> <th scope="row">Algéria</th> <td>Algír</td> <td>37 100 000 fő</td> </tr> </tbody> </table>
A fenti példa láblécében most 3 cellát adtunk meg, igazából szerencsésebb lett volna egy olyan cella, ami három cella szélességű, vagyis össze kellett volna vonni a cellákat.
Erre nézünk példákat a következőkben.
Az előző példában is láthattuk, hogy szükség lehet arra, hogy a szomszédos cellákat vízszintesen, vagy függőlegesen (vagy mindkét módon) összevonjuk. A vízszintes összevonáshoz a colspan, a függőlegeshez a rowspan paramétert kell használnunk. Ezt egyaránt alkalmazhatjuk a <td> és <th> tagtag-k sem.lendő -t kellett a cellába írni. A 9-es, 10-es Explorer esetében nem tudom, mi a helyzet, most épp nincs kéznél eknél is. Ha összevontunk cellákat, akkor a táblázatban már csak azokat a cellákat kell szerepeltetni, amelyeket nem érintett az összevonás.
A cellaösszevonások hatással lesznek a fejléccella hatásköreinek (scope) beállítására is, ezért az első példában még nem szerepeltetjük a scope paramétert.
Példa - Cellák összevonása vízszintesen (colspan)
Név | Telefonszám | ||
---|---|---|---|
Vezetéknév | Keresztnév | Körzetszám | Kapcsolási szám |
Kovács | Viktor | 45 | 555465 |
<table border="1"> <tr> <th colspan="2">Név</th> <th colspan="2">Telefonszám</th> </tr> <tr> <th>Vezetéknév</th> <th>Keresztnév</th> <th>Körzetszám</th> <th>Kapcsolási szám</th> </tr> <tr> <td>Kovács</td> <td>Viktor</td> <td>45</td> <td>555465</td> </tr> </table>
Az első sorban a colspan="2" paraméterrel állítottuk be, hogy két cellát össze kívánunk vonni. Emiatt a táblázat első sorában mindössze két <th> taget kell szerepeltetnünk.
Láthatjuk, hogy a fenti kód is látszólag a megfelelő eredményt adja, de érdemes lehet még precízebben megadni a táblázatunkat. Ennek később (pl. a táblázatok stíluslappal való szépítése) nagy hasznát vesszük. Ehhez azonban meg kell ismerkednünk a <col>, illetve <colgroup> taggel.
A <colgroup> taggel oszlopcsoportokat adhatunk meg, és azok tulajdonságait is beállíthatjuk. A <colgroup> tagnek a <caption> tag után, a <thead> tag előtt kell szerepelnie. A <colgroup> tagen belül szerepelhet a <col> tag is (ha a colgroup elemnek nincs span attribútuma), amely az egyes oszlopokba tartozó cellák tulajdonságait írja le.
Nézzük, hogy a példánk hogyan változik a <col> és <colgroup> használatával! A lehetőségek bemutatása miatt a korábbi táblázatot még egy oszloppal (Nem) kiegészítettük.
Példa - Colgroup és col használata
Név | Telefonszám | Nem | ||
---|---|---|---|---|
Vezetéknév | Keresztnév | Körzetszám | Kapcsolási szám | |
Kovács | Viktor | 45 | 555465 | Férfi |
<table border="1"> <colgroup span="2"></colgroup> <colgroup span="2"></colgroup> <col> <tr> <th colspan="2">Név</th> <th colspan="2">Telefonszám</th> <th>Nem</th> </tr> <tr> <th>Vezetéknév</th> <th>Keresztnév</th> <th>Körzetszám</th> <th>Kapcsolási szám</th> <th></th> </tr> <tr> <td>Kovács</td> <td>Viktor</td> <td>45</td> <td>555465</td> <td>Férfi</td> </tr> </table>
Látható, hogy a table tag után egy <colgroup span="2"></colgroup> kódot helyeztünk el. Ezzel jelezzük, hogy az első két oszlop alkot egy oszlopcsoportot. A span paraméterrel adhatjuk meg, hogy hány oszlopot szeretnénk így csoportosítani. Ez az első oszlopcsoport az, ami a nevet tartalmazza. Ezt követi egy ugyanilyen kód, ez viszont már a Telefonszám mezőket csoportosítja. Az utolsó oszlop nincs csoportosítva, ott egyszerűen a <col> taget használtuk.
Azáltal, hogy oszlopcsoportot használtunk, és az összevont cellákban fejléccellák is szerepelnek, a <th> elem scope attribútumát is ennek megfelelően kell beállítani. Az oszlopcsoportok esetén a scope="colgroup" paramétert kell beállítani, a sima oszlopokban viszont marad a scope="col" paraméter megadása.
Példa - Colgroup és col használata, scope megadással
Név | Telefonszám | Nem | ||
---|---|---|---|---|
Vezetéknév | Keresztnév | Körzetszám | Kapcsolási szám | |
Kovács | Viktor | 45 | 555465 | Férfi |
<table border="1"> <colgroup span="2"></colgroup> <colgroup span="2"></colgroup> <col> <tr> <th scope="colgroup" colspan="2">Név</th> <th scope="colgroup" colspan="2">Telefonszám</th> <th scope="col">Nem</th> </tr> <tr> <th scope="col">Vezetéknév</th> <th scope="col">Keresztnév</th> <th scope="col">Körzetszám</th> <th scope="col">Kapcsolási szám</th> <th></th> </tr> <tr> <td>Kovács</td> <td>Viktor</td> <td>45</td> <td>555465</td> <td>Férfi</td> </tr> </table>
A program először felolvassa a táblázatot, majd azt halljuk, ahogy navigáltunk az egyes cellák között.
Most nézzünk egy olyan példát, ahol függőeleges összevonás történt!
Példa - Cellák összevonása függőlegesen (rowspan)
Név | Titulus | Dr. |
---|---|---|
Vezetéknév | Kovács | |
Keresztnév | Henrik |
<table border="1"> <tr> <th scope="row" rowspan="3">Név</th> <th scope="row">Titulus</th> <td>Dr.</td> </tr> <tr> <th scope="row">Vezetéknév</th> <td>Kovács</td> </tr> <tr> <th scope="row">Keresztnév</th> <td>Henrik</td> </tr> </table>
Az első sorban a rowspan="3" paraméterrel állítottuk be, hogy három cellát összevonunk függőlegesen. Emiatt a többi sorban csak a fennmaradó cellákat kellett megadnunk.
A program először felolvassa a táblázatot, majd azt halljuk, ahogy navigáltunk az egyes cellák között.
Az alábbi interaktív példában egy 4×4-es táblázatot helyeztünk el. Módosítsd a kódot a megfelelő összevonásokkal, hogy az alábbi felosztásban 9 cella maradjon. Az ábrának megfelelően sorszámozd a cellákat!
A következőkben újra áttekintjük a bemutatott tageket, a használható paraméterek felsorolásával és magyarázatával.
A tananyag az ELTE - PPKE informatika tananyagfejlesztési projekt (TÁMOP-4.1.2.A/1-11/1-2011-0052) keretében valósult meg.
A tananyag elkészítéséhez az ELTESCORM keretrendszert használtuk.