Come usi colspan e rowspan nelle tabelle HTML?


97

Non so come unire righe e colonne all'interno di tabelle HTML.

Esempio

Puoi aiutarmi a creare una tabella del genere in HTML?


Unirli giusto? Intendi colspan?
animuson

@DavidThomas posso creare una tabella con 5 righe e 3 colonne. Ma non so davvero dove applicare il rowspan, ecc.
Max Frai

14
@DAvid: Sembra abbastanza chiaro che il richiedente non sa da dove cominciare, a volte è difficile quando non sai nemmeno se esiste un attributo che stai cercando (in questo caso in righe di righe)
Chris Sobolewski

6
Un buon modo per orientarsi su questo, se sei abbastanza fortunato da avere un editor visuale come Dreamweaver, è creare la griglia della tabella di base e quindi unire le celle necessarie. Quindi ispezionare il codice che è stato prodotto. Vedrai dove vengono unite le varie celle e come è fatto con il codice. Dreamweaver produce in genere codice pulito e conforme, quindi rappresenterà un buon esempio per uno studente.
Surreal Dreams

Risposte:


112

Suggerirei:

table {
    empty-cells: show;
    border: 1px solid #000;
}

table td,
table th {
    min-width: 2em;
    min-height: 2em;
    border: 1px solid #000;
}
<table>
    <thead>
        <tr>
            <th rowspan="2"></th>
            <th colspan="4">&nbsp;</th>
        </tr>
        <tr>
            <th>I</th>
            <th>II</th>
            <th>III</th>
            <th>IIII</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td></td>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
         </tr>
    </tbody>
</table>

Riferimenti:


2
Non dimenticare di aggiungere i bei colori.
Blazemonger

31
In questo caso, lascio i "bei colori" come esercizio per il lettore.
David dice di reintegrare Monica il

Se qualcuno è interessato a come funziona in generale, vedere l'eccellente spiegazione di @ animousons sotto stackoverflow.com/a/9830847/362951
mit

117

Se sei confuso come funzionano i layout delle tabelle, in pratica iniziano con x = 0, y = 0 e si fanno strada. Spieghiamo con la grafica, perché sono così divertenti!

Quando inizi una tabella, crei una griglia. La tua prima riga e cella saranno nell'angolo in alto a sinistra. Pensalo come un puntatore a un array, che si sposta a destra con ogni valore incrementato di x e si sposta verso il basso con ogni valore incrementato di y.

Per la tua prima riga, stai definendo solo due celle. Uno si estende su 2 righe in basso e uno su 4 colonne. Quindi, quando raggiungi la fine della tua prima riga, assomiglia a questo:

Anteprima # 0001

<table>
    <tr>
        <td rowspan="2"></td>
        <td colspan="4"></td>
    </tr>
</table>

Ora che la riga è terminata, il "puntatore di matrice" salta alla riga successiva. Poiché la posizione x 0 è già occupata da una cella precedente, x salta alla posizione 1 per iniziare a riempire le celle. * Vedere la nota sulla differenza tra i riquadri.

Questa riga contiene quattro celle che sono tutti blocchi 1x1, riempiendo la stessa larghezza della riga sopra di essa.

Anteprima # 0002

<table>
    <tr>
        <td rowspan="2"></td>
        <td colspan="4"></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>

La riga successiva è composta da tutte le celle 1x1. Ma, ad esempio, cosa succede se aggiungi una cella in più? Bene, sarebbe semplicemente saltato fuori dal bordo a destra.

Anteprima # 0003

<table>
    <tr>
        <td rowspan="2"></td>
        <td colspan="4"></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>

* Ma cosa succede se invece (invece di aggiungere la cella extra) facciamo in modo che tutte queste celle abbiano un file di 2? La cosa che devi considerare qui è che anche se non aggiungerai altre celle nella riga successiva, la riga deve ancora esistere (anche se è una riga vuota). Se provassi ad aggiungere nuove celle nella riga immediatamente dopo, noteresti che inizierebbe ad aggiungerle alla fine della riga inferiore.

Anteprima # 0004

<table>
    <tr>
        <td rowspan="2"></td>
        <td colspan="4"></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td rowspan="2"></td>
        <td rowspan="2"></td>
        <td rowspan="2"></td>
        <td rowspan="2"></td>
        <td rowspan="2"></td>
    </tr>
    <tr>
        <td></td>
    </tr>
</table>

Goditi il ​​meraviglioso mondo della creazione di tavoli!


14

Se qualcuno sta cercando un rowspan sia a sinistra che a destra, ecco come puoi farlo:

table { 
    border-collapse: collapse;
}

td {
    padding: 20px; 
    border: 1px solid black; 
    text-align: center;
}
<table>
    <tbody>
    <tr>
        <td rowspan="2">LEFT</td>
        <td> 1 </td>
        <td> 2 </td>
        <td> 3 </td>
        <td> 4 </td>
        <td rowspan="2">RIGHT</td>
    </tr>
    <tr>
        <td> 5 </td>
        <td> 6 </td>
        <td> 7 </td>
        <td> 8 </td>
    </tr>
    <tr>
        <td> - </td>
        <td> - </td>
        <td> - </td>
        <td> - </td>
        <td> - </td>
        <td> - </td>
    </tr>
    </tbody>
</table>

In alternativa , se desideri aggiungere SINISTRA e DESTRA a un set di righe esistente, puoi ottenere lo stesso risultato inserendoli con un segno compresso colspantra:

table {
    border-collapse: collapse;
}

td {
    padding: 20px; 
    border: 1px solid black; 
    text-align: center;
}
<table>
    <tbody>
    <tr>
        <td rowspan="3">LEFT</td>
        <td colspan="4" style="padding: 0; border-bottom: solid 1px transparent;"></td>
        <td rowspan="3">RIGHT</td>
    </tr>
    <tr>
        <td> 1 </td>
        <td> 2 </td>
        <td> 3 </td>
        <td> 4 </td>
    </tr>
    <tr>
        <td> 5 </td>
        <td> 6 </td>
        <td> 7 </td>
        <td> 8 </td>
    </tr>
    <tr>
        <td> - </td>
        <td> - </td>
        <td> - </td>
        <td> - </td>
        <td> - </td>
        <td> - </td>
    </tr>
    </tbody>
</table>


5

Utilizzare rowspanse si desidera estendere le celle verso il basso e colspanper estenderle trasversalmente.


3

È possibile utilizzarlo rowspan="n"su un elemento td per estendere le nrighe e colspan="m"su un elemento td per estendere le mcolonne.

Sembra che il tuo primo td abbia bisogno di un rowspan="2"e il prossimo td abbia bisogno di un colspan="4".



2
<style type="text/css">
     table { border:2px black dotted; margin: auto; width: 100%; }
    tr { border: 2px red dashed; }
    td { border: 1px green solid; }
</style>
<table>
    <tr>
        <td rowspan="2">x</td> 
        <td colspan="4">y</td>
    </tr>
    <tr>
        <td>I</td>
        <td>II</td>
        <td>III</td>
        <td>IV</td>
    </tr>
    <tr>
        <td>nothing</td>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
    </tr>
</table>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

0
<body>
<table>
<tr><td colspan="2" rowspan="2">1</td><td colspan="4">2</td></tr>
<tr><td>3</td><td>3</td><td>3</td><td>3</td></tr>
<tr><td colspan="2">1</td><td>3</td><td>3</td><td>3</td><td>3</td></tr>
</table>
</body>

0

Colspan e Rowspan Una tabella è divisa in righe e ogni riga è divisa in celle. In alcune situazioni abbiamo bisogno che le celle della tabella si estendano su (o unite) più di una colonna o riga. In queste situazioni possiamo usare gli attributi Colspan o Rowspan.

Colspan L'attributo colspan definisce il numero di colonne che una cella deve estendere (o unire) orizzontalmente. Cioè, vuoi unire due o più celle di seguito in una singola cella.

<td colspan=2 > 

Come colspan?

<html>
<body >
    <table border=1 >
        <tr>
            <td colspan=2 >
                Merged
            </td>
        </tr>
        <tr>
            <td>
                Third Cell
            </td>
            <td>
                Forth Cell
            </td>
        </tr>
    </table>
</body>
</html>

Rowspan L'attributo rowspan specifica il numero di righe che una cella deve estendersi verticalmente. Cioè, vuoi unire due o più celle nella stessa colonna come una singola cella verticalmente.

<td rowspan=2 >

Come Rowspan?

<html>
<body >
    <table border=1 >
        <tr>
            <td>
                First Cell
            </td>
            <td rowspan=2 >
                Merged
            </td>
        </tr>
        <tr>
            <td valign=middle>
                Third Cell
            </td>
        </tr>
    </table>
</body>
</html>

0

Ho usato ngIf per una mia logica simile. è il seguente:

<table>
<tr *ngFor="let object of objectData; let i= index;">
<td *ngIf="(i%(object.rowSpan))==0" [attr.rowspan]="object.rowSpan">{{object.value}}</td>
</tr>
</table>

qui, sto ottenendo il valore di rowspan dal mio oggetto modello.


-1

È simile al tuo tavolo

  <table border=1 width=50%>
<tr>
    <td rowspan="2">x</td> 
    <td colspan="4">y</td>
</tr>
<tr>
    <td bgcolor=#FFFF00 >I</td>
    <td>II</td>
    <td bgcolor=#FFFF00>III</td>
    <td>IV</td>
</tr>
<tr>
    <td>empty</td>
    <td bgcolor=#FFFF00>1</td>
    <td>2</td>
    <td bgcolor=#FFFF00>3</td>
    <td>4</td>
</tr>

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.