Unire le celle di una tabella
Nelle lezioni precedenti abbiamo costruito tabelle nelle quali ogni cella occupava lo spazio di una riga e una colonna.
Nelle lezioni precedenti abbiamo costruito tabelle nelle quali ogni cella occupava lo spazio di una riga e una colonna.
Osserviamo questa tabella completa:
<table>
<caption>Orario scolastico</caption>
<thead>
<tr>
<th>Ora</th>
<th>Lunedì</th>
<th>Martedì</th>
<th>Mercoledì</th>
</tr>
</thead>
<tbody>
<tr>
<td>8:00</td>
<td>Italiano</td>
<td>Matematica</td>
<td>Informatica</td>
</tr>
<tr>
<td>9:00</td>
<td>Inglese</td>
<td>Storia</td>
<td>Matematica</td>
</tr>
</tbody>
</table>
La tabella possiede 4 colonne:
- Ora;
- Lunedì;
- Martedì;
- Mercoledì.
Ogni cella occupa normalmente una sola posizione della tabella.
HTML permette a una cella di occupare lo spazio di più colonne oppure di più righe.
Per farlo utilizziamo due attributi:
colspan e rowspan.
colspan: una cella su più colonne
Supponiamo di voler inserire nell’orario una riga dedicata all’INTERVALLO.
Supponiamo di voler inserire nell’orario una riga dedicata all’INTERVALLO.
Vogliamo che la parola INTERVALLO occupi tutta la larghezza della tabella e non una sola cella.
Prima: una cella normale
Se aggiungiamo una normale cella td:
<table>
<caption>Orario scolastico</caption>
<thead>
<tr>
<th>Ora</th>
<th>Lunedì</th>
<th>Martedì</th>
<th>Mercoledì</th>
</tr>
</thead>
<tbody>
<tr>
<td>8:00</td>
<td>Italiano</td>
<td>Matematica</td>
<td>Informatica</td>
</tr>
<tr>
<td>INTERVALLO</td>
</tr>
<tr>
<td>9:00</td>
<td>Inglese</td>
<td>Storia</td>
<td>Matematica</td>
</tr>
</tbody>
</table>
La cella INTERVALLO occupa soltanto la prima colonna.
+------------+-------------+-------------+-------------+
| Ora | Lunedì | Martedì | Mercoledì |
+------------+-------------+-------------+-------------+
| 8:00 | Italiano | Matematica | Informatica |
+------------+-------------+-------------+-------------+
| INTERVALLO | | | |
+------------+-------------+-------------+-------------+
| 9:00 | Inglese | Storia | Matematica |
+------------+-------------+-------------+-------------+
Noi vogliamo invece ottenere:
+--------------------------------------------------------+
| Ora | Lunedì | Martedì | Mercoledì |
+------------+-------------+-------------+-------------+
| 8:00 | Italiano | Matematica | Informatica |
+--------------------------------------------------------+
| INTERVALLO |
+--------------------------------------------------------+
| 9:00 | Inglese | Storia | Matematica |
+------------+-------------+-------------+-------------+
Dopo: utilizziamo colspan
La tabella possiede 4 colonne.
Dobbiamo quindi indicare che la cella INTERVALLO deve occupare lo spazio di 4 colonne.
<table>
<caption>Orario scolastico</caption>
<thead>
<tr>
<th>Ora</th>
<th>Lunedì</th>
<th>Martedì</th>
<th>Mercoledì</th>
</tr>
</thead>
<tbody>
<tr>
<td>8:00</td>
<td>Italiano</td>
<td>Matematica</td>
<td>Informatica</td>
</tr>
<tr>
<td colspan="4">INTERVALLO</td>
</tr>
<tr>
<td>9:00</td>
<td>Inglese</td>
<td>Storia</td>
<td>Matematica</td>
</tr>
</tbody>
</table>
Abbiamo modificato soltanto questa cella:
<td colspan="4">INTERVALLO</td>
colspan="4" significa:
questa cella deve occupare lo spazio di quattro colonne.
La cella non deve necessariamente occupare tutta la tabella
colspan può essere utilizzato anche per unire
soltanto alcune colonne.
Consideriamo questa tabella:
<table>
<thead>
<tr>
<th>Ora</th>
<th>Lunedì</th>
<th>Martedì</th>
<th>Mercoledì</th>
</tr>
</thead>
<tbody>
<tr>
<td>10:00</td>
<td colspan="2">Laboratorio di Informatica</td>
<td>Italiano</td>
</tr>
</tbody>
</table>
La riga continua a occupare complessivamente 4 colonne:
10:00occupa 1 colonna;Laboratorio di Informaticaoccupa 2 colonne;Italianooccupa 1 colonna.
Quindi:
1 + 2 + 1 = 4 colonne
Una cella con colspan="2"
conta come due colonne, anche se nel codice
vediamo un solo elemento td.
rowspan: una cella su più righe
Vediamo ora una situazione diversa.
Vediamo ora una situazione diversa.
Supponiamo che il lunedì ci siano due ore consecutive di Informatica.
Prima: due celle separate
Senza utilizzare rowspan la tabella sarà:
<table>
<caption>Orario scolastico</caption>
<thead>
<tr>
<th>Ora</th>
<th>Lunedì</th>
<th>Martedì</th>
<th>Mercoledì</th>
</tr>
</thead>
<tbody>
<tr>
<td>8:00</td>
<td>Informatica</td>
<td>Matematica</td>
<td>Italiano</td>
</tr>
<tr>
<td>9:00</td>
<td>Informatica</td>
<td>Storia</td>
<td>Inglese</td>
</tr>
</tbody>
</table>
Il risultato è:
+-------+---------------+-------------+-----------+
| Ora | Lunedì | Martedì | Mercoledì |
+-------+---------------+-------------+-----------+
| 8:00 | Informatica | Matematica | Italiano |
+-------+---------------+-------------+-----------+
| 9:00 | Informatica | Storia | Inglese |
+-------+---------------+-------------+-----------+
Abbiamo due celle diverse che contengono entrambe la parola Informatica.
Vogliamo invece ottenere una sola grande cella:
+-------+---------------+-------------+-----------+
| Ora | Lunedì | Martedì | Mercoledì |
+-------+ +-------------+-----------+
| 8:00 | | Matematica | Italiano |
+-------+ Informatica +-------------+-----------+
| 9:00 | | Storia | Inglese |
+-------+---------------+-------------+-----------+
Dopo: utilizziamo rowspan
Modifichiamo la tabella completa:
<table>
<caption>Orario scolastico</caption>
<thead>
<tr>
<th>Ora</th>
<th>Lunedì</th>
<th>Martedì</th>
<th>Mercoledì</th>
</tr>
</thead>
<tbody>
<tr>
<td>8:00</td>
<td rowspan="2">Informatica</td>
<td>Matematica</td>
<td>Italiano</td>
</tr>
<tr>
<td>9:00</td>
<td>Storia</td>
<td>Inglese</td>
</tr>
</tbody>
</table>
Nella riga delle 8:00 abbiamo scritto:
<td rowspan="2">Informatica</td>
Significa che la cella Informatica occupa due righe: quella delle 8:00 e quella delle 9:00.
Perché nella seconda riga manca una cella?
Osserviamo soltanto le due righe:
<tr>
<td>8:00</td>
<td rowspan="2">Informatica</td>
<td>Matematica</td>
<td>Italiano</td>
</tr>
<tr>
<td>9:00</td>
<td>Storia</td>
<td>Inglese</td>
</tr>
La seconda riga contiene soltanto tre nuovi elementi
td.
La quarta posizione non manca: è già occupata dalla cella Informatica che arriva dalla riga precedente.
COLONNE
1 2 3 4
8:00 8:00 Informatica Matematica Italiano
|
|
9:00 9:00 | Storia Inglese
|
+--- stessa cella
Se una cella utilizza rowspan="2",
nella riga successiva non dobbiamo aggiungere
un’altra cella nella posizione già occupata.
colspan e rowspan a confronto
| Attributo | Direzione | Significato | Esempio |
|---|---|---|---|
colspan |
Orizzontale → | Una cella occupa più colonne | colspan="4" |
rowspan |
Verticale ↓ | Una cella occupa più righe | rowspan="2" |
Chiediti sempre:
La cella deve diventare più larga?
→ colspan
La cella deve diventare più alta?
→ rowspan
Sono attributi della cella
colspan e rowspan non sono nuovi tag.
colspan e rowspan
non sono nuovi tag.
Sono attributi che aggiungiamo al tag
td o th.
<td colspan="4">INTERVALLO</td>
oppure:
<td rowspan="2">Informatica</td>
Il numero indica quante colonne o quante righe deve occupare la cella.
LABORATORIO
Modifichiamo il nostro orario
Riprendiamo il file orario.html realizzato nelle lezioni precedenti.
Riprendiamo il file orario.html realizzato nelle lezioni precedenti.
In questa esercitazione utilizzeremo prima
colspan e successivamente
rowspan.
Passo 1 - Inserire una riga INTERVALLO
Il nostro orario contiene:
- 1 colonna per l’ora;
- 5 colonne per i giorni della settimana.
In totale abbiamo quindi 6 colonne.
All’interno di tbody,
tra due ore dell’orario, aggiungi:
<tr>
<td colspan="6">INTERVALLO</td>
</tr>
Salva e osserva il risultato nel browser.
La cella INTERVALLO occupa tutta la larghezza dell’orario?
Perché abbiamo utilizzato il valore 6?
Passo 2 - Sperimentare con colspan
Modifica temporaneamente:
colspan="6"
in:
colspan="3"
Salva e osserva il risultato.
La cella occupa ancora tutta la tabella?
Ripristina poi colspan="6".
Passo 3 - Creare una lezione di due ore
Scegli un giorno nel quale vuoi inserire due ore consecutive della stessa materia.
Per esempio, supponiamo di avere Informatica il lunedì alle 8:00 e alle 9:00.
Prima avremo:
<tr>
<td>8:00</td>
<td>Informatica</td>
<td>Matematica</td>
<td>Italiano</td>
<td>Storia</td>
<td>Inglese</td>
</tr>
<tr>
<td>9:00</td>
<td>Informatica</td>
<td>Italiano</td>
<td>Matematica</td>
<td>Inglese</td>
<td>Storia</td>
</tr>
Modifica la prima cella Informatica:
<td rowspan="2">Informatica</td>
e rimuovi la seconda cella Informatica.
Le due righe diventano:
<tr>
<td>8:00</td>
<td rowspan="2">Informatica</td>
<td>Matematica</td>
<td>Italiano</td>
<td>Storia</td>
<td>Inglese</td>
</tr>
<tr>
<td>9:00</td>
<td>Italiano</td>
<td>Matematica</td>
<td>Inglese</td>
<td>Storia</td>
</tr>
Nella seconda riga non dobbiamo inserire una cella per il lunedì.
Quella posizione è già occupata dalla cella
Informatica con
rowspan="2".
Esercizio autonomo
Completa il tuo orario scolastico e inserisci:
- una riga INTERVALLO che occupi tutte le colonne;
- almeno una materia che occupi due ore consecutive;
-
almeno un utilizzo corretto di
colspan; -
almeno un utilizzo corretto di
rowspan.
Controlla che:
- le colonne rimangano correttamente allineate;
- INTERVALLO occupi tutta la tabella;
- la materia di due ore compaia una sola volta;
- non siano presenti celle duplicate dopo un rowspan;
- il codice sia correttamente indentato.
Errori comuni
Errore 1 - Non contare le colonne
Prima di utilizzare colspan
dobbiamo sapere quante colonne deve occupare la cella.
Se l’orario contiene 6 colonne e INTERVALLO deve occuparle tutte:
<td colspan="6">INTERVALLO</td>
Errore 2 - Aggiungere altre celle dopo un colspan completo
Questa riga è già completa:
<tr>
<td colspan="6">INTERVALLO</td>
</tr>
La singola cella occupa infatti lo spazio di tutte e sei le colonne.
Errore 3 - Duplicare una cella dopo rowspan
Se una cella utilizza:
<td rowspan="2">Informatica</td>
occupa anche la stessa posizione nella riga successiva.
Non dobbiamo aggiungere un altro td
in quella posizione.
Verifica rapida
-
A cosa serve
colspan? -
Che cosa significa
colspan="4"? -
A cosa serve
rowspan? -
Che cosa significa
rowspan="2"? - Se una tabella ha 6 colonne e una cella deve occuparle tutte, quale attributo scriviamo?
- Se una materia occupa tre ore consecutive, quale valore potremmo assegnare a rowspan?
-
Perché dopo un
rowspan="2"non dobbiamo ripetere la cella nella riga successiva? - colspan e rowspan sono tag o attributi?