WWW-ohjelmointi

Taulukot

Taulukkoa käytetään riveistä ja sarakkeista koostuvan datan esittämiseen. Esimerkiksi alkuainetaulukko tai lukujärjestys ovat lunnostaan tällaisia.

Taulukko esitetään <table>-tagin avulla. Ennen tyylien mukaan ottamista taulukkoon saa piirrettyä reunaviivat lisäämällä <table>-tagille attribuutti border, jonka arvoksi annetaan reunan paksuuden kertova luku. <table border="1"> (Jatkossa reunaviivat kannattaa kuitenkin luoda css-tyyleillä.)

Rivejä ja soluja

Taulukko sisältää rivejä, jotka merkitään <tr>-tagilla (tablerow). Rivit taas koostuvat soluista, jotka merkitään <td>-tagilla (tabledata). Selain luo annetuista riveistä ja niiden sisältämistä soluista oikean kokoisen taulukon automaattisesti ja kohdistaa solut sarakkeiksi.

Taulukoiden kaikki varsinainen sisältö on kirjoitettava soluihin. Eli rakenteellisesti taulukossa on vain rivejä ja riveissä soluja. Eri rivit voivat sisältää eri määrän soluja. Taulukon koko päätetään eniten soluja sisältävän rivin mukaan.

<table border="1">
    <tr>
        <td>Eka rivi, eka solu</td>
        <td>Eka rivi, toinen solu</td>
    </tr>
    <tr>
        <td>Toka rivi, eka solu</td>
        <td>Toka rivi, toinen solu</td>
    </tr>
</table>
Eka rivi, eka solu Eka rivi, toinen solu
Toka rivi, eka solu Toka rivi, toinen solu

Otsikkosolut

Varsinaisten sisältösolujen lisäksi taulukoissa tarvitaan usein myös “otsikkosoluja”, joita merkitään <th>-tagilla (table header). Otsikkosolut toimivat käytännössä täysin samoin kuin varsinaiset solutkin.

Oletuksena selaimet näyttävät otsikkosolut lihavoituina.

<table border="1">
    <tr>
        <th>Matti</th>
        <th>Jorma</th>
        <th>Antti</th>
    </tr>
    <tr>
        <td>6</td>
        <td>7</td>
        <td>8</td>
    </tr>
</table>
Matti Jorma Antti
6 7 8

Solujen yhdistäminen

Epäsäännöllisiä taulukoita voi tehdä yhdistelemällä soluja keskenään. Taulukon soluja voi yhdistellä <td>-tagin attribuuteilla:

  • colspan – Yhdistää solun sitä seuraavien solujen kanssa.
    Saa arvokseen luvun, joka kertoo yhdistettävien solujen määrän.
  • rowspan – Yhdistää solun alaspäin seuraavien solujen kanssa.
    Saa arvokseen luvun, joka kertoo yhdistettävien solujen määrän.
<table border="1">
    <tr>
        <td colspan="2">_1_</td>
        <td>_3_</td>
    </tr>
    <tr>
        <td>_a_</td>
        <td>_b_</td>
        <td rowspan="2">_c_</td>
    </tr>
    <tr>
        <td>_1_</td>
        <td>_2_</td>
    </tr>
</table>
_1_ _3_
_a_ _b_ _c_
_1_ _2_

Taulukon otsikko

Koko taulukolle voi antaa otsikon tai “kuvatekstin” tagilla <caption>. Tagi tulee heti ensimmäiseksi <table>-tagin sisään.

<table border="1">
    <caption>Poikien tulokset</caption>
    <tr>
        <th>Matti</th>
        <th>Jorma</th>
        <th>Antti</th>
    </tr>
    <tr>
        <td>6</td>
        <td>7</td>
        <td>8</td>
    </tr>
</table>
Poikien tulokset
Matti Jorma Antti
6 7 8

Taulukon sisäinen ryhmittely

Taulukon rivejä voidaan ryhmitellä <thead>-, <tbody>- ja <tfoot>-tageilla taulukon ylätunnisteeksi, varsinaiseksi sisällöksi sekä alatunnisteeksi. Nämä tagit tulevat suoraan <table>-tagin sisään ja niiden sisään tulee taulukon rivejä <tr>-tageilla. <thead>- ja <tfoot>-tageja voi taulukossa olla yksi kumpaakin, mutta <tbody>-tageja voi olla useampi.

Ryhmittely mahdollistaa muun muassa taulukon tyylittelyn css-säännöillä normaalia tehokkaammin. Erityisen hyödyllistä voi olla mahdollisuus skrollata <tbody>-tagin sisällä olevia datarivejä <thead>- ja <tfoot>-tageihin laitetuista otsikkoriveistä riippumattomasti. Näin saadaan taulukon otsikkorivit pysymään koko ajan näkyvissä, vaikka dataa on paljon.

Toinen vastaava tilanne voi olla tulostettaessa, jos taulukko jatkuu useammalle sivulle. Erottelemalla taulukon ylä- ja alatunnisteen, on mahdollista saada ne tulostumaan taulukon jokaiselle sivulle.

<table border="1">
    <caption>Poikien tulokset</caption>
    <thead>
        <tr>
            <th>Matti</th>
            <th>Jorma</th>
            <th>Antti</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>6</td>
            <td>7</td>
            <td>8</td>
        </tr>
        <tr>
            <td>9</td>
            <td>10</td>
            <td>11</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <th>Matti</th>
            <th>Jorma</th>
            <th>Antti</th>
        </tr>
    </tfoot>
</table>
Poikien tulokset
Matti Jorma Antti
6 7 8
9 10 11
Matti Jorma Antti

Taulukon sisällä

Taulukon sisällä voi olla lähes mitä tahansa HTML-sisältöä.

<table border="1">
    <tr>
        <td>Vain tekstiä</td>
        <td>
            <h1>Tässä on otsikko</h1>
            <p>Tässä taas tekstikappale</p>
        </td>
    </tr>
    <tr>
        <td>
            Solussa voi olla lista
            <ul>
                <li>Lista-eka</li>
                <li>Lista-toka</li>
            </ul>
        </td>
        <td>
            Tai, kuten listoissa, taulukossa voi olla taulukko
            <table border="1">
                <tr>
                    <td>A</td>
                    <td>B</td>
                </tr>
                <tr>
                    <td>C</td>
                    <td>D</td>
                </tr>
            </table>
        </td>
    </tr>
</table>
Vain tekstiä

Tässä on otsikko

Tässä taas tekstikappale

Solussa voi olla lista
  • Lista-eka
  • Lista-toka
Tai, kuten listoissa, taulukossa voi olla taulukko
A B
C D