Vous pouvez créer des éléments et y ajouter des caractères jusqu'à ce que vous détectiez l'habillage, par ex. en observant les changements dans offsetHeight
(vous pouvez l'optimiser en utilisant l'algorithme de bissection). Cela dépend bien sûr du navigateur, du système, des polices installées et des paramètres de l'utilisateur. Vous devrez donc le calculer pour chaque fragment de texte à chaque fois que la page est affichée, redimensionnée ou lorsque l'utilisateur change la taille de la police (même en pleine page). zoom introduit des erreurs "off-by-one" qui pourraient provoquer le changement du nombre de caractères). Par conséquent, il peut s'agir d'une surcharge dans la plupart des situations et, lorsqu'il est mis en œuvre, il cause moins de problèmes qu'il n'en résout.
Il existe d'autres solutions, par ex. Si vous voulez vous assurer qu'une seule ligne est visible, vous pouvez utiliser white-space:nowrap
et overflow:hidden
et dans certains navigateurs text-overflow:ellipsis
pour que le texte soit bien coupé. Ou si vous ne voulez pas que les mots soient coupés, utilisez un contenant de 1 ligne avec overflow:hidden
.
Qu'essayez-vous d'accomplir ici? Il pourrait y avoir un meilleur moyen. La disposition de flux HTML n'est vraiment pas conçue pour ce genre de chose. –