Pouvez CSS forcer un saut de ligne après chaque mot dans un élément?
Je suis en train de construire un site multilingue, avec le propriétaire m'aider avec quelques traductions. Certains affichent des expressions de besoin des sauts de ligne pour conserver le style du site.
Malheureusement, le propriétaire n'est pas un ordinateur gars, donc si il voit foo<br />bar
il y a de la chance, il va modifier les données d'une certaine manière comme il le traduire.
Est-il un CSS solution (en plus de la modification de la largeur) pour l'appliquer à un élément qui permettrait de pause après chaque mot?
(Je sais que je peux le faire en PHP, mais je me demandais si il y a un truc astucieux je ne sais pas dans le CSS pour accomplir la même chose, peut-être dans le CJK fonctionnalités.)
MODIFIER
Je vais tenter de dessiner ce qui se passe:
---------------- ----------------
| Short Word | | Gargantuan |
| | | Word |
---------------- ----------------
Le long des césures automatiquement, le mot n'est pas. Je veux qu'elle ressemble à ceci:
---------------- ----------------
| Short | | Gargantuan |
| Word | | Word |
---------------- ----------------
- En HTML, les éléments ne pause après chaque mot, lorsque la largeur d'un élément donné l'exige. Voulez-vous dire dans les mots?
- Non, j'ai besoin d'une solution qui n'est pas basé sur la fixation de la largeur. Le problème est que certaines phrases sont plus longues et pause automatiquement (comme vous le décrivez) et certaines phrases sont plus courtes et ne se cassent pas, faire des incohérences dans la présentation.
- Oui, c'est comme vous décrire exactement. De ne pas nuire à la mise en page vraiment, mais il pourrait regarder mieux.
- vous pouvez utiliser word-spacing mais il aurait une incidence sur tous les mots.. je Pense que vous ne pouvez pas obtenir autour de wraping ces mots dans les éléments span.
- Ressemble à ça, merci pour la pensée
Vous devez vous connecter pour publier un commentaire.
Utilisation
où
<parent-width>
est la largeur de l'élément parent (ou une valeur élevée arbitraire qui ne rentrent pas dans une ligne). De cette façon, vous pouvez être sûr qu'il y a même un saut de ligne après une seule lettre. Fonctionne avec Chrome/FF/Opera/IE7+ (et probablement même IE6 car c'est pour soutenir word-spacing ainsi)..parent { word-spacing: 100px; }
où100px
est la largeur de l'élément parent. Le problème est que cette solution ne fonctionne pas si vous avez un fluide parent.word-spacing: 100000px
et vous n'aurez pas à vous soucier de l'être-parent fluide en termes de largeur. Définition d'un mot de l'espacement de 100% aurait fait sens (il aurait été de 100% de la société mère de largeur), mais les valeurs exprimées en pourcentage ne sont pas pris en charge pour cette propriété css.word-spacing: 2em;
et à un mobile largeur je veux qu'ils soient une seule ligne:word-spacing: unset;
.one-word-per-line { max-width; <parent-width>; word-spacing: <parent-width>; }
La réponse donnée par @HursVanBloob fonctionne uniquement avec une largeur fixe de conteneur parent, mais échoue dans le cas de fluide de la largeur des conteneurs.
J'ai essayé beaucoup de propriétés, mais rien n'a fonctionné comme prévu. Finalement, je suis parvenu à la conclusion que le fait de donner
word-spacing
une très grande valeur fonctionne parfaitement bien.ou, pour les navigateurs modernes vous pouvez utiliser le CSS
vw
unité (largeur visuelle en % de la taille de l'écran).width
vos parents papier d'emballage ou de votre contenu de l'emballage. Le texte corrigé de travail est donc d'apporter à votre prochain mot sur la nouvelle ligne, mais aussi en utilisant l'espace disponible à cause detext-indent: long value;
. Vous devrez définir unwidth-limit
à elle. Il est difficile de trouver dans le monde réel de l'utilisation de votre scénario. Si vous avezwidth
alors pourquoi diviser le texte.Une solution alternative est décrite sur Autre phrase à un seul mot par ligne, en appliquant
display:table-caption;
à l'élémentEssayez d'utiliser
white-space: pre-line;
. Il crée un saut de ligne, où un saut de ligne apparaît dans le code, mais ignore le supplément d'espaces (les tabulations et des espaces etc.).Tout d'abord, écrire vos mots sur des lignes distinctes dans votre code:
Puis d'appliquer le style à l'élément contenant les mots.
Être prudent, mais, chaque saut de ligne dans le code à l'intérieur de l'élément de créer un saut de ligne. Ainsi écrit ce qui suit entraîne un supplément de saut de ligne avant le premier mot et après le dernier mot:
Il y a un grand article sur la CSS Astuces expliquant l'autre blanc-espace d'attributs.
white-space
peut être utilisé pour répondre à la question. Désolé, mais je ne vois pas comment.white-space: pre;
" pour afficher les sauts de ligne comme un<pre>
tag ferait ? Qui pourrait fonctionner, et un saut de ligne devrait regarder de plus naturel pour les traducteurs que<br />
. Je vais essayer de modifier votre réponse à ajouter 🙂white-space: pre-line;
serait probablement plus approprié, car il ignore les espaces superflus dans votre code. Je vais mettre à jour la réponse.white-space: pre;
pour IE 7.white-space: pre-ine
cela fonctionne très bien, alors qu'il ne fonctionne pas avecword-spacing
. merci pour l'astuce.Si vous voulez être en mesure de choisir parmi les différentes solutions, en plus de la donnée réponses...
Une autre méthode consiste à donner le conteneur d'une largeur de 0 et assurez-vous que le trop-plein est visible. Ensuite, chaque mot de débordement hors de lui et sera sur sa propre ligne.
CSS:
HTML:
Ou vous pouvez utiliser l'un de ceux qui ont récemment proposé
width
valeurs, à condition que ceux qui existent encore au moment où vous lisez ceci.CSS:
HTML:
Vous ne pouvez pas cibler chaque mot dans le CSS. Cependant, avec un peu de jQuery vous pourrait probablement.
Avec jQuery, vous pouvez envelopper chaque mot dans un
<span>
et puis CSS réglée àdisplay:block
qui le mettrait sur sa propre ligne.En théorie, bien sûr 😛
:first-child
astuce ou quelque chose du genre...https://jsfiddle.net/bm3Lfcod/1/
Pour ceux qui recherchent une solution qui fonctionne à l'intérieur d'un flexible conteneur parent avec des enfants qui est flexible dans les deux dimensions. par exemple. barre de navigation boutons.
CSS
propriété que vous pouvez donner. Dire une propriété qui pourrait provoquer desbrowser reflow
J'ai été confrontée au même problème, et aucune des options ici m'a aidé. Certains services de messagerie ne prennent pas en charge spécifiée styles.
Voici ma version, qui a résolu le problème et fonctionne partout j'ai vérifié:
OU à l'aide de CSS: