Nous avons un ckeditor sur notre CMS. Nos utilisateurs finaux entreront de longs articles via cet éditeur. Nous avons besoin d'un moyen d'empêcher les sauts de ligne au niveau des tirets sur ces articles.
Existe-t-il de toute façon pour éviter les sauts de ligne aux tirets sur tous les navigateurs?
ou ckeditor a-t-il une option pour empêcher cela?
Réponses:
J'ai peur qu'il n'y ait pas de moyen plus simple de le faire de manière fiable que de diviser le texte en «mots» (séquences de caractères non blancs séparés par des espaces) et d'encapsuler chaque «mot» qui contient un trait d'union dans le
nobr
balisage. Donc, les données d'entrée commebla bla foo-bar bla bla
seraient utiliséesbla bla <nobr>foo-bar</nobr> bla bla
.Vous pouvez même envisager d'insérer un
nobr
balisage chaque fois que le «mot» contient autre chose que des lettres et des chiffres. La raison en est que certains navigateurs peuvent même casser des chaînes comme «2/3» ou «f (0)» (voir ma page sur les bizarreries de saut de ligne dans les navigateurs ).la source
nobr
tag n'est pas standard, et fortement déconseillé par le W3C. Voir w3.org/TR/html5/obsolete.html#non-conforming-featuresnobr
balisage fonctionne sur tous les navigateurs, fonctionne même lorsque les feuilles de style sont désactivées et fonctionne indépendamment de la prise en charge des caractères spéciaux. Y a-t-il un vrai problème avec cela?Vous pouvez utiliser
‑
qui est un Unicode NON-BREAKING HYPHEN (U + 2011).HTML:
‑
ou‑
Voir également: http://en.wikipedia.org/wiki/Hyphen#In_computing
la source
-
par‑
.nobr
étiquettes partout, cela ne fonctionne pas très bien dans la pratique. IE l'affiche sous forme de tiret en fr, Safari ajoute plus d'espace autour de lui qu'un tiret normal, et la plupart des éditeurs de texte l'affiche sous forme de point d'interrogation, de boîte ou de tout autre caractère dénué de sens.white-space: nowrap
comme suggéré par derekerdmann. Btw sur FF / Win7, le tiret timide semble être converti en un tiret normal lorsqu'il est copié et collé en dehors de Firefox, même si l'application cible est compatible Unicode.Une solution pourrait être d'utiliser une
span
balise supplémentaire et lawhite-space
propriété CSS. Définissez simplement une classe comme celle-ci:Et puis ajoutez une étendue avec cette classe autour de votre texte coupé.
Cette approche devrait fonctionner correctement dans tous les navigateurs - les implémentations de bogues répertoriées ici sont pour d'autres valeurs de la
white-space
propriété: http://reference.sitepoint.com/css/white-space#compatibilitysectionla source
white-space: nowrap
à l'ensemble du conteneur. Sinon, laissez tomber; Premièrement, il n'y a aucune raison d'empêcher les sauts de ligne avec des traits d'union pour le contenu général, et deuxièmement, il n'y a aucun moyen que vous puissiez obtenir automatiquement ce que vous cherchez à moins que vous ne soyez prêt à pirater CKEditor.<nobr>
est beaucoup plus clair.Vous ne pouvez pas le faire sans modifier chaque instance HTML. Par conséquent, j'ai écrit quelques JS pour les remplacer:
jQuery:
Vanille JS:
la source
Utilisez le caractère de menuisier mot (
⁠
) autour du tiret. Cela fonctionne également dans IE.https://en.wikipedia.org/wiki/Word_joiner
corriger des traits d'union spécifiques ...
ou tout ...
la source
Essayez ce CSS:
la source