Je conçois beaucoup d'articles Web simples sur une seule page pour les ventes ou les e-mails. Je trouve souvent que je rencontre des problèmes avec les titres et les sauts de ligne souhaités à différentes largeurs de support.
Par exemple, je pourrais avoir un titre tel que:
Notre New thingamabob est la meilleure chose depuis le pain tranché!
Sans aucune attention aux sauts de ligne, les sauts de ligne comme celui-ci:
Notre New thingamabob est la meilleure chose depuis
le pain tranché!
À pleine taille, j'aimerais rompre la ligne après "le". Création de deux lignes.
Notre New thingamabob est la
meilleure chose depuis le pain tranché!
Pour un écran de largeur moyenne, je casserais deux fois:
Notre New thingamabob
est la meilleure chose
depuis le pain tranché!
Pour des écrans encore plus étroits, je casserais après "nouveau", après "thingamabob" et après "thing". Création de quatre lignes.
Notre New
thingamabob
est la meilleure chose
depuis le pain tranché!
Je ne veux vraiment pas utiliser les balises break ( <br>
) parce que cela fixe les pauses à toutes les tailles. Jusqu'à présent , je l' ai utilisé les requêtes des médias et des pourcentages de largeur pour les différents h1
- h5
balises afin que la largeur des forces de marquer une pause. Mais cela me semble "hacky" (c'est aussi très capricieux parfois basé sur le texte réel).
Quelle est la meilleure façon de contrôler les sauts de ligne sans les coder en dur en HTML?
La meilleure pratique consiste à reconnaître que vous n'avez aucun contrôle réel sur les sauts de ligne sur le Web et qu'il est préférable de concevoir dans cet esprit.
Toute solution contraire devra, invariablement, être hacky. Comme ce sera un hack car HTML n'adhère pas aux sauts de ligne définis par l'utilisateur en dehors du codage en dur. Vous pouvez le faire assez facilement avec JS. Configurez vos points d'arrêt avec des plages vides avec des classes uniques, puis en fonction de la taille de la fenêtre d'affichage, vous pouvez injecter des balises BR dans chaque plage souhaitée.
Il existe certains styles CSS qui fonctionneront sur les nouveaux navigateurs pour contrôler la façon dont le navigateur gère le retour à la ligne, mais cela ne vous donnera toujours pas le contrôle exact que vous recherchez dans cette situation.
D'un autre côté, si votre objectif n'est pas tant de contrôler des sauts de ligne spécifiques, mais de vous assurer que votre bloc de texte `` empile '' sur des lignes relativement égales, je définirais la largeur de la DIV différemment pour chaque fenêtre. Ce ne sera pas parfait, mais probablement assez proche et pourrait être le meilleur compromis.
la source
Il existe un plugin jquery pour cela, Balance Text .
Il s'agit d'un plugin créé par Adobe
text-wrap: balance;
créé en même temps que la proposition d' Adobe pour obtenir une option CSS qui ferait juste cela comme la fonctionnalité Balance Ragged Lines d'Adobe InDesign (sonne bien, mais même si elle est acceptée, il faudra des années avant que les navigateurs ne la prennent en charge).Le plugin, cependant, fonctionne en ce moment. Il équilibre tous les éléments qui ont la classe
balance-text
, ou sur l'utilisation de jQuery comme$('.some-elements').balanceText();
Voici une démo officielle d'Adobe , utilisant du texte justifié .
Voici une démo que j'ai faite en utilisant
<h1>
s aligné à gauche - appuyez sur modifier pour voir le code. Cela montre certaines des limitations au moment de la rédaction:En démo 4 vous verrez comment tout au sein de votre bloc de texte équilibré comme un
<a>
lien,<span>
s ou accent comme<em>
,<strong>
,<b>
,<i>
etc alors retiré.De plus, en comparant les démos 1, 2 et 5, vous verrez que vous semblez avoir besoin d'utiliser à la fois la classe CSS et l'appel jQuery.
Il semble modérément fiable mais parfois glitch - au moment de la rédaction, il glisse parfois lorsqu'il est dans une colonne latérale, laissant des orphelins seuls (mais il semble fonctionner 95% + du temps et je ne l'ai pas encore vu glisser, sauf dans une colonne latérale), et pour des raisons inexpliquées, mes démos ne fonctionnent pas sur Firefox mais les démos d'Adobe le font (bien dans IE9 +, ne peut pas tester dans IE8 pour le moment). Si vous l'utilisez, prenez en compte le temps de test.
la source
Je dois y faire face un peu régulièrement, avec des commentaires de designers voulant que les choses se cassent d'une certaine manière. J'ai trouvé que le moyen le plus simple de le faire est de mettre un span avec une classe à l'intérieur du texte, puis de le faire
display: block;
pour les requêtes multimédias.Cela ressemblerait donc à ceci:
Ensuite, j'aurais CSS avec quelque chose comme ceci:
Vous devez encore passer par là et le raffiner pour vous assurer que les choses cassent comme vous le souhaitez pour toutes les largeurs.
Si c'est un problème fréquent, vous pouvez créer votre propre ensemble de classes de saut de ligne à la Twitter Bootstrap ou quel que soit le système de grille que vous utilisez, en modélisant les noms de classe selon la convention de dénomination que vous utilisez.
la source
Vous pouvez utiliser JavaScript pour détecter la largeur de l'écran et écrire la bonne version (avec les <br> comme vous les avez dans votre message) dans une div vide via innerHTML.
Malheureusement, les «pauses Web souhaitées» et les «meilleures pratiques Web» ne vont pas de pair. Lâchez votre désir perfectionniste de mettre chaque mot au bon endroit - il y a tout simplement trop de possibilités d'écran et trop de lecteurs qui n'ont pas la mentalité de concepteur, vous devez même vous soucier des sauts de ligne dans leurs titres. Recherchez Responsive Web Design pour mieux comprendre ces problèmes.
la source
Ma méthode actuelle ...
Et le CSS:
Les largeurs nécessitent parfois un ajustement en fonction du texte réel utilisé, mais c'est le schéma général que j'utilise. Réduire essentiellement la largeur de la
h1
balise afin que la ligne se casse là où je veux qu'elle se casse.Cela fonctionne, cela nécessite simplement des tests approfondis pour s'assurer que les pauses se produisent là où vous le souhaitez. Mais, des tests approfondis sont nécessaires dans tous les cas. Donc, ce n'est pas nécessairement plus de travail à cet égard.
la source
margin: 0 auto; text-align: center;
qu'une seule fois en dehors d'une requête média et cela s'appliquera à tousVous pouvez ajouter
white-space: nowrap
et placer<wbr>
aux endroits où vous souhaitez autoriser les sauts de ligne. Si cela ne suffit pas et que vous souhaitez un contrôle précis des requêtes multimédias, vous pouvez toujours ajouter des classes comme<wbr class="mobileOnly">
<wbr>
doc: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/wbrla source