J'essaie d'empêcher une table dont la largeur a été explicitement déclarée de ne pas déborder en dehors de son parent div
. Je suppose que je peux le faire d’une certaine manière en utilisant max-width
, mais je n'arrive pas à faire fonctionner ça.
Le code suivant (avec une très petite fenêtre) provoquera ceci:
<style type="text/css">
#middlecol {
width: 45%;
border-right:2px solid red;
}
#middlecol table {
max-width:100% !important;
}
</style>
<div id="middlecol">
<center>
<table width="400" cellpadding="3" cellspacing="0" border="0" align="center">
<tr>
<td bgcolor="#DDFFFF" align="center" colspan="2">
<strong>Notification!</strong>
</td>
<tr>
<td width="50">
<img src="http://www.example.com/img.png" width="50" height="50" alt="" border="0">
</td>
<td>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</td>
</tr>
</table>
</center>
</div>
La ligne rouge est la bordure droite du div
, et si vous réduisez la fenêtre de votre navigateur, vous verrez que le tableau ne s’y glisse pas.
Retournez-le en faisant:
<style type="text/css">
#middlecol {
border-right: 2px solid red;
width: 45%;
}
#middlecol table {
max-width: 400px;
width: 100% !important;
}
</style>
Aussi je vous conseillerais de:
center
(elle est obsolète)width
, bgcolor
, définissez-les par CSS (width
et background-color
)(en supposant que vous puissiez contrôler la table qui a été rendue)
Vous pouvez empêcher les tables de s’étendre au-delà de leur div parent en utilisant table-layout:fixed
.
Le CSS ci-dessous va élargir vos tableaux à la largeur de la div qui l’entoure.
table
{
table-layout:fixed;
width:100%;
}
J'ai trouvé cette astuce ici .
Un travail rudimentaire consiste à définir display: table
sur le div contenant.
J'ai essayé toutes les solutions mentionnées ci-dessus, puis n'a pas fonctionné. J'ai 3 tables l'une en dessous de l'autre. Le dernier a débordé. Je l'ai corrigé avec:
/* Grid Definition */
table {
Word-break: break-Word;
}
Pour IE11 en mode Edge, vous devez définir ceci sur Word-break:break-all
Au début, j'ai utilisé la méthode de James Lawruk. Ceci a cependant changé toutes les largeurs des td
.
La solution pour moi était d'utiliser white-space: normal
sur les colonnes (qui était réglé sur white-space: nowrap
). De cette façon, le texte sera toujours brisé. En utilisant Word-wrap: break-Word
s'assurera que tout se brisera au besoin, même à mi-chemin d'une Parole.
Le CSS ressemblera alors à ceci:
td, th {
white-space: normal; /* Only needed when it's set differntly somewhere else */
Word-wrap: break-Word;
}
Ce n'est peut-être pas toujours la solution souhaitable, car Word-wrap: break-Word
pourrait rendre vos mots illisibles dans le tableau. Il gardera toutefois votre table à la bonne largeur.
J'ai essayé la quasi-totalité des solutions ci-dessus, mais cela n'a pas fonctionné pour moi ...
Word-break: break-all;
Ceci à ajouter sur le div parent (conteneur de la table.)