138 votes

Indique un endroit préféré pour un saut de ligne

Supposons que je veuille afficher ce texte dans une cellule d'un tableau HTML :

Honey Nut Cheerios, Wheat Chex, Grape-Nuts, Rice Krispies, Some random cereal with a very long name, Honey Bunches of Oats, Wheaties, Special K, Froot Loops, Apple Jacks

et je veux que la ligne s'interrompe de préférence après l'une des virgules.

Existe-t-il un moyen d'indiquer au moteur de rendu HTML d'essayer de rompre à un endroit donné, et de le faire d'abord avant d'essayer de rompre après l'un des espaces, sans en utilisant des espaces insécables ? Si j'utilise des espaces insécables, la largeur est augmentée sans condition. I vouloir le saut de ligne doit avoir lieu après l'un des espaces, si l'algorithme de retour à la ligne a essayé avec les virgules d'abord et n'a pas réussi à faire tenir la ligne.

J'ai essayé d'envelopper des fragments de texte dans <span> mais cela ne semble rien apporter d'utile.

<html>
  <head>
      <style type="text/css">
        div.box { width: 180px; }
        table, table td { 
          border: 1px solid; 
          border-collapse: collapse; 
        }
      </style>
  </head>
  <body>
    <div class="box">
      <table>
      <tr>
          <td>lorem ipsum</td>
          <td>lorem ipsum</td>
          <td>lorem ipsum</td>
      </tr>
      <tr>
          <td>lorem ipsum</td>
          <td>
            <span>Honey Nut Cheerios,</span>
            <span>Wheat Chex,</span>
            <span>Grape-Nuts,</span>
            <span>Rice Krispies,</span>
            <span>Some random cereal with a very long name,</span>
            <span>Honey Bunches of Oats,</span>
            <span>Wheaties,</span>
            <span>Special K,</span>
            <span>Froot Loops,</span>
            <span>Apple Jacks</span>
          </td>
          <td>lorem ipsum</td>
      </tr>
      </table>
    </div>
  </body>
</html>

note : Il semble que le CSS3 text-wrap: avoid est ce que je veux, mais je n'arrive pas à le faire fonctionner.

2voto

Gaby aka G. Petrioli Points 85891

La réponse est non ( Vous ne pouvez pas modifier l'algorithme de coupure de ligne utilisé ).

Mais il existe des solutions de contournement ( le meilleur est le réponse acceptée )

Vous pouvez vous rapprocher de l'espace sans rupture &nbsp; mais seulement entre des mots qui vont ensemble ( ce que vous avez dans les travées, mais pas après la virgule ), ou vous pouvez utiliser la fonction white-space:nowrap comme l'a mentionné @Marcel.

Les deux solutions font la même chose, et toutes deux vont no rompre un groupe de mots s'il ne tient pas tout seul.

0voto

ACarter Points 1215

Nouvelle réponse : nous avons maintenant HTML5 :

HTML5 introduit le <wbr> étiquette. (Il s'agit de l'acronyme anglais Word Break Opportunity).

Ajouter un <wbr> indique au navigateur de faire une césure à cet endroit avant tout autre, de sorte qu'il est facile de faire une césure après les virgules :

Honey Nut Cheerios,<wbr> Wheat Chex,<wbr> Grape-Nuts,<wbr> Rice Krispies,<wbr> Some random cereal with a very long name,<wbr> Honey Bunches of Oats,<wbr> Wheaties,<wbr> Special K,<wbr> Froot Loops,<wbr> Apple Jacks

Il est pris en charge par tous les principaux navigateurs, à l'exception d'IE.

-3voto

Angry Spartan Points 1098

Utilisation <div> au lieu de <span> ou spécifier une classe pour SPAN et lui donner l'attribut affichage:bloc attribut.

-3voto

gooflord Points 5

Vous pouvez simplement ajuster les paramètres de marge dans CSS (margin-right dans ce cas).

text {
    margin-right: 20%;
}

-6voto

Mathias Bynens Points 41065

Il existe un élément HTML pour cela™ : l'outil (désormais normalisé) <wbr> élément .

Je vous conseille de l'utiliser. Il se peut qu'il ne fonctionne pas partout mais c'est le mieux que l'on puisse faire sans passer par toutes les étapes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X