J'ai une table-cellule avec une largeur et une hauteur fixes et si le texte est trop grand, la taille de la cellule doit rester identique et le texte doit être masqué par un dépassement de capacité: hidden.
div {
display: table-cell
height: 100px;
width: 100px;
overflow: hidden;
vertical-align: middle;
}
Table-cell, cependant, s'étend au-delà de 100 px si trop de texte est ajouté. Des astuces pour l'empêcher de s'étendre?
Le texte doit comporter plusieurs lignes. La solution "espace-blanc: nowrap" ne s'applique pas.
Par Règles CSS 2.1 , la hauteur d'une cellule de tableau est «la hauteur minimale requise par le contenu». Ainsi, vous devez restreindre indirectement la hauteur en utilisant un balisage interne, normalement un élément div
(<td><div>content</div></td>
), et définir les propriétés height
et overflow
sur l'élément div
(sans y placer display: table-cell
, ce qui rendrait sa hauteur obéissante CSS 2.1 règles de la cellule de table).
Je ne pense pas que la réponse acceptée résolve complètement le problème. Vous vouliez avoir un vertical-align: middle
sur le contenu des cellules de la table. Mais lorsque vous ajoutez une div à l'intérieur de la cellule et que vous lui donnez une hauteur, le contenu de cette div interne sera au sommet. .__ Cochez cette jsfiddle . Le débordement: caché; fonctionne bien, mais si vous raccourcissez le contenu afin qu’il ne reste qu’une seule ligne, cette ligne ne sera pas centrée verticalement
La solution n'est pas d'ajouter un DIV dans la cellule de la table, mais plutôt à l'extérieur. Voici le code :
/* some wrapper */
div.d0 {
background: grey;
width:200px;
height: 200px;
}
div.table {
margin: 0 auto; /* just cosmetics */
width: 150px;
height: 150px;
background: #eee;
display: table;
}
div.tablecell {
display: table-cell;
vertical-align: middle;
text-align:center;
height: 100%;
width: 100%;
background: #aaa;
}
div.outer-div {
height: 150px;
overflow: hidden;
}
<div class="d0">
<div class="outer-div">
<div class="table">
<div class="tablecell">
Lorem ipsum
<!--dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,-->
</div>
</div>
</div>
</div>
En css, vous ne pouvez pas définir la hauteur maximale des cellules de tableau. Si l'espace est vide, vous ne pouvez pas le casser avec la largeur maximale. La solution fonctionne donc avec JavaScript dans tous les navigateurs.
Donc, cela peut fonctionner pour vous.
For Limiter la hauteur maximale de toutes les cellules ou lignes du tableau avec Javascript:
Ce script convient aux tables de débordement horizontales.
Ce script augmente la largeur de la table de 300 px à chaque fois, jusqu'à 4 000 px jusqu'à ce que les lignes soient réduites à une hauteur maximale (160 px), et vous pouvez également modifier les nombres selon vos besoins.
var i = 0, row, table = document.getElementsByTagName('table')[0], j = table.offsetWidth;
while (row = table.rows[i++]) {
while (row.offsetHeight > 160 && j < 4000) {
j += 300;
table.style.width = j + 'px';
}
}
Vous pouvez effectuer l'une des opérations suivantes:
Utilisez l'attribut css "line-height" et définissez-le par ligne (), cela centrera aussi verticalement le contenu dans
Définissez l'attribut CSS "display" sur "block" et procédez comme suit:
td
{
display: block;
overflow-y: hidden;
max-height: 20px;
}
bonne chance!
Essayez quelque chose comme ça: -
table {
width: 50%;
height: 50%;
border-spacing: 0;
position:absolute;
}
td {
border: 1px solid black;
}
#content {
position:absolute;
width:100%;
left:0px;
top:20px;
bottom:20px;
overflow: hidden;
}
Essayer
<td style="Word-wrap: break-Word">Long text here</td>
si vous utilisez display: table-cell, max-height ne fonctionnera pas pour div de ce style . La solution qui a fonctionné pour moi consiste donc à définir la hauteur maximale de div interne.
<div class="outer_div" style="display:table">
<div class="inner_div" style="display:table-cell">
<img src="myimag.jpg" alt="" style="max-height:300px;width:auto"/>
</div>
<div class="inner_div" style="display:table-cell">
<img src="myimag2.jpg" alt="" style="max-height:300px;width:auto"/>
</div>
</div>
Utilisez le style ci-dessous:
div {
display: fixed;
max-height: 100px;
max-width: 100px;
overflow: hidden;
}
Le HTML étant:
<div>
your long text here
</div>