Ce que j'essaie de faire
J'ai une taille limitée de la boîte qui est censé contenir du texte:
.box {
width: 100px;
height: 40px;
background-color: yellow;
}
<div class="box">
Some text goes here.
</div>
Toutefois, si le texte est trop long pour tenir dans la boîte, je veux remplacer ce texte avec une autre version plus courte, que j'ai préparé à l'avance.
Ainsi, par exemple, si je veux remplir les deux cases avec ces deux noms:
Short version Long version
------------------------------------------------------------
Rudolf E. Raspe Rudolf Erich Raspe
Baron Munchausen Hieronymus Karl Friedrich von Munchhausen
Ensuite, la première zone contient la mention "Rudolf Erich Raspe" car il est assez court pour s'adapter à l'intérieur, mais la deuxième case contiendra "le Baron de Munchausen" depuis le Baron nom complet est trop long.
Comment puis-je mettre en place une telle zone, juste en utilisant HTML5 et CSS3? Compatibilité du navigateur est important, mais, je n'ai pas besoin pour accueillir les très anciennes versions d'Internet Explorer antérieures à la version 11.
Alternatives
Je peux choisir l'une des options standard pour la manipulation de trop-texte long - laisser déborder, ou de les couper par overflow: hidden
, ou d'ajouter des barres de défilement, ou d'ajouter des points de suspension, ou l'un des autres solutions standard. Mais depuis que je l'ai déjà en version courte de tous les possibles du texte, je voudrais profiter de ces à la place.
Je peux le faire en JavaScript, par exemple, à l'aide d'une enveloppe et de comparer sa taille avec la la boîte. Mais je voudrais un non-JavaScript solution, si possible.
Ce que j'ai essayé
Jusqu'à présent j'ai pensé à faire le texte en quelque sorte pousser lui-même si il est trop long (une combinaison de blanc et word-wrap?), faire le conteneur overflow: hidden pour le cacher quand il est là-bas, et de placer la version courte du texte derrière elle, mais je ne pouvais pas le faire fonctionner, tout en permettant le texte d'occuper plus d'une ligne.
Une autre approche consiste à placer un élément avec le petit texte juste en dessous de l'élément avec le texte long, et d'utiliser certaines de transformer ce qui fait que de courte élément prendre le relais quand il est poussé trop... Mais je ne pouvais pas le faire fonctionner non plus.
Alors... d'autres idées?