Tableau HTML impossible à faire
J'ai besoin de faire le tableau suivant en HTML, trop simple:
Le problème est dans la deuxième ligne, la deuxième colonne n'a qu'une seule ligne, pas deux, dans le code est rowspan = "2". Pourquoi mon code ne fonctionne pas, c'est simple à faire, je ne comprends pas vraiment ce problème…
Voici le code pertinent:
table {
border: 1px solid black;
border-collapse: collapse;
}
td {
border: 1px solid black;
padding: 20px;
text-align: center;
}
<table>
<tr>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>X</td>
<td rowspan="2" colspan="3">X</td>
<td rowspan="3">X</td>
</tr>
<tr>
<td rowspan="3">X</td>
</tr>
<tr>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
</table>
Réponses
Je viens de répondre à une question très similaire il y a quelques jours. Apparemment, si aucune des colonnes ne contient le nombre total de lignes prévues et que le contenu de la cellule le permet, les navigateurs «compressent» le contenu en moins de lignes (ce qui est un bug ou du moins une mauvaise interprétation, mais bon…).
Dès que vous ajoutez plus de contenu dans vos cellules (au moins dans ceux qui font une différence), la mise en page souhaitée est rendue, avec une hauteur en fonction du contenu de la cellule:
table {
border: 1px solid black;
border-collapse: collapse;
}
td {
border: 1px solid black;
padding: 20px;
text-align: center;
}
<table>
<tr>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>X</td>
<td rowspan="2" colspan="3">some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here some more content in here</td>
<td rowspan="3">X</td>
</tr>
<tr>
<td rowspan="3">X</td>
</tr>
<tr>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
</table>
Mais vous pouvez également ajouter une hauteur fixe à une ou à certaines des cellules pour rendre visible la mise en page prévue, même si elles n'ont pas autant de contenu:
table {
border: 1px solid black;
border-collapse: collapse;
}
td {
border: 1px solid black;
padding: 20px;
text-align: center;
}
<table>
<tr>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>X</td>
<td rowspan="2" colspan="3" style="height: 80px;">X</td>
<td rowspan="3">X</td>
</tr>
<tr>
<td rowspan="3">X</td>
</tr>
<tr>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
</tr>
</table>