Mon client a demandé d'activer la césure automatique sur cette page: http://carlosdinizart.com/biography/ , et j'ai réalisé que je ne l'avais jamais vu faire sur une page Web.
Est-il possible de configurer la césure automatique dans un document HTML avec seulement HTML/CSS? Sinon - quelles sont les options?
CSS3 fournit un support pour cela. Source: http://drublic.de/blog/css3-auto-hyphenation-for-text-elements/ Vous pouvez consulter la documentation w3c ici: http: //www.w3 .org/TR/2011/WD-css3-text-20110901/# césure
CSS3 ajoute six propriétés à la liste des choses utiles. Ceux-ci sont:
hyphens
.hyphenate-resource
pour que le navigateur ait plus de chances de rendre votre texte avec la césure appropriée.hyphenate-before
définit un nombre minimum de caractères avant la césure.hyphenate-after
fait la même chose que hyphenate-before
mais pour les caractères après la césure.hyphenate-lines
définit le nombre maximum de lignes écrites par un mot coupé. avec hyphenate-character
vous pouvez spécifier l'entité HTML à utiliser, par exemple \2010
.La propriété principale de cette pile est hyphens
. Il accepte l'une des trois valeurs: none
, manual
ou auto
. La valeur par défaut est manuelle, où vous pouvez définir des tirets via ­
. auto
c'est le meilleur pour le texte continu tandis que les mots sont divisés si possible et disponibles. Et none
ne coupe pas du tout même s'il existe un jeu de caractères pour un saut de ligne possible dans un certain mot.
Mise à jour:
Informations de support du navigateur ici: http://caniuse.com/css-hyphens
Une option consiste à insérer tirets doux dans le texte aux endroits où il peut être rompu. Le trait d'union doux est représenté par l'entité ­
en HTML. Vous pouvez trouver des bibliothèques/outils qui peuvent préparer du texte automatiquement avec ­
s aux bons endroits, sinon vous devrez le faire manuellement.
Pour traiter une page dont la largeur est fixe pour le texte, la solution pratique consiste à ajouter quelques caractères SOFT HYPHEN (U + 00AD), en utilisant la référence d'entité ­
si vous trouvez cela plus confortable que d'entrer le caractère (invisible) lui-même. Vous pouvez trouver assez rapidement quels mots doivent être coupés pour produire un bon résultat.
Dans un cas plus complexe (plusieurs pages, largeur flexible), utilisez un préprocesseur, un code côté serveur ou un code côté client qui ajoute des traits d'union doux. L'approche côté client est la plus simple et peut être appliquée indépendamment des technologies côté serveur et des outils de création. Attention, la césure automatique peut mal tourner et a besoin d'aide: la ou les langues du texte doivent être indiquées dans le balisage (ou autrement, selon la bibliothèque utilisée).
Au minimum, vous pouvez simplement mettre les attributs lang=en class=hyphenate
dans le <body>
tag et le code suivant dans la partie head
:
<script
src="http://hyphenator.googlecode.com/svn/tags/Version%204.0.0/Hyphenator.js">
</script>
<script>Hyphenator.run();</script>
Démo: http://bytelevelbooks.com/code/javascript/hyphenation.html (texte à largeur flexible, avec juste la largeur maximale définie, vous pouvez donc le tester en variant la largeur de la fenêtre du navigateur).
Actuellement, mon css pour <p>
est
p {
font-style: normal;
padding: 0;
margin-top: 0;
margin-left: 0px ;
margin-right: .5em ;
margin-bottom: 0;
text-indent: 1em;
text-align: justify;
-webkit-hyphens: auto;
-moz-hyphens: auto;
-ms-hyphens: auto;
-o-hyphens: auto;
Word-break:break-Word;
hyphens: auto;
}
Cela ne fonctionne pas pour Chrome 39 sur Mac. Connu pour ne pas fonctionner sur Opera. Fonctionne pour Firefox, iOS Safari.
Ce n'est PAS infaillible: les colonnes étroites (moins de 6 mots) sont laides, mais dans l'ensemble, la mise en page ressemble beaucoup plus à un type correctement défini.