Il layout

Per definire il layout della tabella dobbiamo usare la proprietà table-layout che può avere due valori: auto (la tabella si posiziona automaticamente in base al suo contenuto) o fixed (la tabella viene posizionata in base ai valori settati con la proprietà width).

table {
	table-layout: auto;
}

I bordi delle celle

Per definire come devono comportarsi i bordi tra due celle o tra una cella e l'intera tabella (se sono stati impostati con la proprietà border) dobbiamo usare la proprietà border-collapse che può avere due valori: collapse (un bordo singolo divide due celle) o separate (ogni cella ha il suo bordo, separato da quello delle altre). Nell'esempio le singole celle condividono il bordo ma la tabella ha un suo proprio bordo separato.

table{ 
    border: 1px solid black;
	border-collapse: separate; 
} 
td{ 
    border: 1px solid black;
	border-collapse: collapse; 
}

Per definire lo spazio tra i bordi quando la proprietà border-collapse è impostata a separate dobbiamo usare la proprietà border-spacing.

table {
    border: 1px solid black;
	border-spacing: 5px;
}

Le celle vuote

Per definire come devono essere trattate le celle vuote dobbiamo usare la proprietà empty-cells che può avere due valori: show (i bordi delle celle vuote vengono mostrati) o hide (i bordi delle celle vuote vengono nascosti).

td {
	empty-cells: hide;
}

La didascalia

Per definire come deve essere posizionata la didascalia inserita nel tag <caption> rispetto alla tabella che lo contiene dobbiamo usare la proprietà caption-side che può avere due valori, top o bottom.

caption {
	caption-side: bottom;
}
<table>
	<caption>Orario</caption>
	<thead>
	<tr>
		<th>Lunedì</th>
		<th>Martedì</th>
		<th>Mercoledì</th>
		<th>Giovedì</th>
		<th>Venerdì</th>
	</tr>
	</thead>
	<tbody>
	<tr>
		<td>Italiano</td>
		<td>Geografia</td>
		<td>Filosofia</td>
		<td>Chimica</td>
		<td>Matematica</td>
	</tr>
	<tr>
		<td></td>
		<td>Storia</td>
		<td>Latino</td>
		<td></td>
		<td>Italiano</td>
	</tr>
	<tr>
		<td>Matematica</td>
		<td></td>
		<td></td>
		<td></td>
		<td>Fisica</td>
	</tr>
	<tr>
		<td>Fisica</td>
		<td>Italiano</td>
		<td></td>
		<td>Educazione fisica</td>
		<td>Geografia</td>
	</tr>
	</tbody>
</table>
table {
	table-layout: auto;
  border: 1px solid black;
  border-collapse: separate; 
  border-spacing: 5px;
}

td{ 
  border: 1px solid black;
	border-collapse: collapse; 
  empty-cells: hide;
}

caption {
	caption-side: bottom;
}
// no js