J'ai une disposition en grille semblable à celle de header
ci-dessous. Il y a un texte dans la div dont la largeur est 1fr
. Je veux que le texte à l'intérieur de cette div soit tronqué quand il est trop long. L'ajout de text-overflow
en tant que ellpsis
ne fonctionne pas. Une idée comment le faire?
Ce doit être une grille et je ne peux absolument pas changer cela.
html,
body {
height: 100%;
width: 100%;
overflow: hidden;
}
body {
display: flex;
}
.container {
display: flex;
flex-direction: column;
flex: 1;
}
content {
flex: 1;
background-color: red;
}
header {
background-color: limegreen;
display: grid;
grid-template-columns: 0fr 1fr 0fr;
}
header div {
border: 1px solid orange;
}
.long {
text-overflow: Ellipsis;
}
<div class="container">
<header>
<div>Left</div>
<div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Right</div>
</header>
<content>
</content>
</div>
changer le fichier .long en bas
.long {
text-overflow: Ellipsis;
white-space: nowrap;
overflow: hidden;
}
la raison pour laquelle vous devez ajouter du blanc et du trop-plein est la suivante:
white-space: nowrap
pour dire aux navigateurs de ne pas utiliser de texte renvoyé à la ligne lorsque la longueur du texte dépasse la largeur du bloc; la valeur par défaut de white-space
est normale, ce qui indique qu'il peut être renvoyé à la ligne, de sorte qu'il n'y aura pas de débordement du texte;overflow
est visible. Lorsque le texte dépasse le bloc contenant, il ne fait que s'afficher. Il n'est donc pas nécessaire de dépasser le texte à afficher, uniquement si vous définissez overflow
à hidden
. Ensuite, lorsque le texte ne peut pas être entièrement affiché, il utilisera la propriété text-overflow
.Ajoutez overflow: hidden
et white-space: nowrap
lorsque vous avez utilisé text-overflow
html,
body {
height: 100%;
width: 100%;
overflow: hidden;
}
body {
display: flex;
}
.container {
display: flex;
flex-direction: column;
flex: 1;
}
content {
flex: 1;
background-color: red;
}
header {
background-color: limegreen;
display: grid;
grid-template-columns: 0fr 1fr 0fr;
}
header div {
border: 1px solid orange;
}
.long {
text-overflow: Ellipsis;
white-space: nowrap;
overflow: hidden;
}
<div class="container">
<header>
<div>Left</div>
<div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Right</div>
</header>
<content>
</content>
</div>
1) quand utiliser
text-overflow: Ellipsis;
doit aussi utiliseroverflow: hidden;
.2)
white-space: nowrap;
Ne permet pas la rupture de texte dans la nouvelle ligne.
Alors, change comme ça:
.long {
text-overflow: Ellipsis;
overflow: hidden;/*/<------------new/*/
white-space: nowrap;/*/<---------new/*/
}
Définissez une hauteur, définissez white-space
sur nowrap
et overflow: hidden
html,
body {
height: 100%;
width: 100%;
overflow: hidden;
}
body {
display: flex;
}
.container {
display: flex;
flex-direction: column;
flex: 1;
}
content {
flex: 1;
background-color: red;
}
header {
background-color: limegreen;
display: grid;
grid-template-columns: 0fr 1fr 0fr;
}
header div {
border: 1px solid orange;
}
.long {
height: 20px;
white-space: nowrap;
overflow: hidden;
text-overflow: Ellipsis;
}
<div class="container">
<header>
<div>Left</div>
<div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Right</div>
</header>
<content>
</content>
</div>