Existe-t-il un moyen d'ajouter une barre de défilement horizontale à un tableau HTML ? J'ai besoin qu'il soit défilable à la fois verticalement et horizontalement en fonction de la croissance du tableau, mais je n'arrive pas à faire apparaître l'une ou l'autre des barres de défilement.
Réponses
Trop de publicités?Editer : @WickyNilliams a noté que le fait de définir display : block sur le corps d'un tableau privera le tableau de sa sémantique et n'est donc pas une bonne solution pour des raisons d'accessibilité.
J'ai bien réussi avec la solution proposée par @Serge Stroobandt, mais j'ai rencontré le problème de @Shevy avec les cellules qui ne remplissaient pas toute la largeur du tableau. J'ai pu résoudre ce problème en ajoutant quelques styles à l'élément tbody
.
table {
display: block;
overflow-x: auto;
white-space: nowrap;
}
table tbody {
display: table;
width: 100%;
}
Cela a fonctionné pour moi dans Firefox, Chrome et Safari sur Mac.
Je n'ai réussi à faire fonctionner aucune des solutions ci-dessus. Cependant, j'ai trouvé une solution :
body {
background-color: #ccc;
}
.container {
width: 300px;
background-color: white;
}
table {
width: 100%;
border-collapse: collapse;
}
td {
border: 1px solid black;
}
/* try removing the "hack" below to see how the table overflows the .body */
.hack1 {
display: table;
table-layout: fixed;
width: 100%;
}
.hack2 {
display: table-cell;
overflow-x: auto;
width: 100%;
}
<div class="container">
<div class="hack1">
<div class="hack2">
<table>
<tr>
<td>table or other arbitrary content</td>
<td>that will cause your page to stretch</td>
</tr>
<tr>
<td>uncontrollably</td>
<td>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</td>
</tr>
</table>
</div>
</div>
</div>