production:
Bonjour Comment ça va
code:
<p>hello <br> How are you </p>
Comment obtenir la même sortie sans <br>
?
production:
Bonjour Comment ça va
code:
<p>hello <br> How are you </p>
Comment obtenir la même sortie sans <br>
?
Réponses:
Impossible avec la même structure HTML, vous devez avoir quelque chose à distinguer entre Hello
et How are you
.
Je suggère d'utiliser span
s que vous afficherez ensuite sous forme de blocs (comme un en <div>
fait).
<br>
est le bon balisage. L'envergure d'un poème serait «fausse».
Vous pouvez utiliser white-space: pre;
pour que les éléments agissent comme <pre>
, ce qui préserve les retours à la ligne. Exemple:
Notez pour IE que cela ne fonctionne que dans IE8 +.
pre
est pre-line
, ce qui permet l' emballage.
white-space
règle CSS.
<br/>
comme d'habitude, mais cachez-le avecdisplay: none
quand vous ne le voulez pas.Je m'attends à ce que la plupart des personnes qui trouvent cette question souhaitent utiliser css / responsive design pour décider si un saut de ligne apparaît ou non à un endroit spécifique. (et n'ont rien de personnel contre<br/>
)
Bien que cela ne soit pas immédiatement évident, vous pouvez réellement appliquer display:none
à une <br/>
balise pour la masquer, ce qui permet l'utilisation de requêtes multimédias en tandem avec des balises BR sémantiques.
<div>
The quick brown fox<br />
jumps over the lazy dog
</div>
@media screen and (min-width: 20em)
{
br
{
display: none; // hide the BR tag for wider screens (i.e. disable the line break)
}
}
Ceci est utile dans la conception réactive où vous devez forcer le texte en deux lignes à la rupture exacte.
display: none
solution est de loin la plus appropriée et la plus utile.
display: inline-block; width: 1em;
au lieu de none
.
<br class='foo'>
si vous aviez besoin de plus de contrôle mais ne devenez pas trop fou!
<br/>
est excellent dans ce qu'il fait; pas besoin de réinventer la roue. Merci!
Il existe plusieurs options pour définir la gestion des espaces blancs et des sauts de ligne. Si l'on peut mettre le contenu par exemple dans une <p>
balise, il est assez facile d'obtenir tout ce que l'on veut.
Pour conserver les sauts de ligne mais pas les espaces blancs, utilisez pre-line
(pas pre
) comme dans:
<style>
p {
white-space: pre-line; /* collapse WS, preserve LB */
}
</style>
<p>hello
How are you</p>
Si un autre comportement est souhaité, choisissez parmi l'un d'eux (WS = WhiteSpace, LB = LineBreak):
white-space: normal; /* collapse WS, wrap as necessary, collapse LB */
white-space: nowrap; /* collapse WS, no wrapping, collapse LB */
white-space: pre; /* preserve WS, no wrapping, preserve LB */
white-space: pre-wrap; /* preserve WS, wrap as necessary, preserve LB */
white-space: inherit; /* all as parent element */
La commande "\ a" en CSS génère un retour chariot. C'est du CSS, pas du HTML, donc il sera plus proche de ce que vous voulez: pas de balisage supplémentaire .
Dans un blockquote, l'exemple ci-dessous affiche à la fois le titre et le lien source et séparez les deux par un retour chariot ( "\a"
):
blockquote[title][cite]:after {
content:attr(title)"\a"attr(cite)
}
display:flex
et est donc un hack dans ce contexte). Ce n'est pas une fantaisie, vraiment, juste une technique moderne. Si vous voulez exactement le même balisage, mais que vous réagissez différemment, c'est la voie à suivre.
"
- n'utilisez pas de guillemets simples '
parce que vous voulez permettre au \a
pour être analysé en tant que caractère spécial.
Au CSS utiliser le code
p {
white-space: pre-line;
}
Avec ce code css, chaque entrée à l'intérieur de la balise P sera une ligne de rupture au html.
S'appuyant sur ce qui a été dit précédemment, il s'agit d'une solution CSS pure qui fonctionne.
<style>
span {
display: inline;
}
span:before {
content: "\a ";
white-space: pre;
}
</style>
<p>
First line of text. <span>Next line.</span>
</p>
input type='text', wrapping the input, and then laying the text over it with a wrapper
div sur plusieurs lignes . That also requires
: aucun; `sur :before
afin de pouvoir toujours cliquer sur le bouton ci-dessous.
<pre> <---------------------------------------
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
</pre> <--------------------------------------
OU
<div style="white-space:pre"> <-----------------------------------
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
</div> <-----------------------------------
Pour qu'un élément ait un saut de ligne par la suite, affectez-le:
display:block;
Les éléments non flottants après un élément de niveau bloc apparaîtront sur la ligne suivante. De nombreux éléments, tels que <p> et <div> sont déjà des éléments de niveau bloc, vous pouvez donc simplement les utiliser.
Mais bien que cela soit bon à savoir, cela dépend vraiment davantage du contexte de votre contenu. Dans votre exemple, vous ne voudriez pas utiliser CSS pour forcer un saut de ligne. Le <br /> est approprié car sémantiquement la balise p est la plus appropriée pour le texte que vous affichez. Plus de balisage juste pour suspendre CSS, c'est inutile. Techniquement, ce n'est pas exactement un paragraphe, mais il n'y a pas de balise <greeting>, alors utilisez ce que vous avez. Bien décrire votre contenu avec HTMl est beaucoup plus important - après avoir cela, alors découvrez comment le rendre joli.
Voici une mauvaise solution à une mauvaise question, mais qui répond littéralement au mémoire:
p {
width : 12ex;
}
p:before {
content: ".";
float: right;
padding-left: 6ex;
visibility: hidden;
}
ex
être? p
et e
ne sont pas si proches du clavier, c'est pourquoi je demande
Les autres réponses fournissent de bons moyens d'ajouter des sauts de ligne, selon la situation. Mais il convient de noter que le :after
sélecteur est l'un des meilleurs moyens de le faire pour le contrôle CSS des listes de liens (et des choses similaires), pour les raisons indiquées ci-dessous.
Voici un exemple, en supposant une table des matières:
<style type="text/css">
.toc a:after{ content: "\a"; white-space: pre; }
</style>
<span class="toc">
<a href="#a1">Item A1</a> <a href="#a2">Item A2</a>
<a href="#b1">Item B1</a> <a href="#b2">Item B2</a>
</span>
Et voici la technique de Simon_Weaver, qui est plus simple et plus compatible. Il ne sépare pas autant le style et le contenu, nécessite plus de code et il peut y avoir des cas où vous souhaitez ajouter des sauts après coup. Pourtant, c'est une excellente solution, en particulier pour les anciens IE.
<style type="text/css">
.toc br{ display: none; } /* comment out for horizontal links */
</style>
<span class="toc">
<a href="#a1">Item A1</a><br/> <a href="#a2">Item A2</a><br/>
<a href="#b1">Item B1</a><br/> <a href="#b2">Item B2</a><br/>
</span>
Notez les avantages des solutions ci-dessus:
pre
)display:block
commentaires )float
ouclear
styles affectant le contenu environnant<br/>
, oupre
avec des pauses codées en dur)a.toc:after
et<a class="toc">
Définition d'une br
balise surdisplay: none
est utile, mais vous pouvez vous retrouver avec WordsRunTogether. Je l'ai trouvé plus utile de le remplacer par un espace, comme ceci:
HTML:
<h1>
Breaking<br />News:<br />BR<br />Considered<br />Harmful!
</h1>
CSS:
@media (min-device-width: 1281px){
h1 br {content: ' ';}
h1 br:after {content: ' ';}
}
br
à ce display: inline-block; width: 1em;
qui devrait empêcher les mots de courir ensemble lors du passage horizontal.
Et le <pre>
tag?
<pre>
afin qu'il brise la ligne. Et si vous voulez avoir des espaces blancs réguliers?
Vous pouvez ajouter beaucoup de remplissage et forcer le texte à être divisé en nouvelle ligne, par exemple
p{
padding-right: 50%;
}
A bien fonctionné pour moi dans une situation avec un design réactif, où seulement dans une certaine plage de largeur, il fallait que le texte soit divisé.
Vous devez déclarer le contenu à l'intérieur <span class="class_name"></span>
. Après cela, la ligne sera rompue.
\A
signifie caractère de saut de ligne.
.class_name::after {
content: "\A";
white-space: pre;
}
Les réponses de Vincent Robert et Joey Adams sont valides. Si vous ne souhaitez cependant pas modifier le balisage, vous pouvez simplement insérer un<br />
utilisant javascript.
Il n'y a aucun moyen de le faire en CSS sans changer le balisage.
:after
ou :before
pour cela.
Je suppose que vous ne vouliez pas utiliser un point d'arrêt, car cela rompra toujours la ligne. Est-ce exact? Si c'est le cas, que diriez-vous d'ajouter un point d'arrêt <br />
dans votre texte, puis de lui donner une classe comme celle d' <br class="hidebreak"/>
utiliser la requête multimédia juste au-dessus de la taille que vous souhaitez qu'il casse pour masquer le<br />
afin qu'il se casse à une largeur spécifique mais reste en ligne au-dessus de cette largeur.
HTML:
<p>
The below line breaks at 766px.
</p>
<p>
This is the line of text<br class="hidebreak"> I want to break.
</p>
CSS:
@media (min-width: 767px) {
br.hidebreak {display:none;}
}
"Tip: The <br> tag is useful for writing addresses or poems."
Non. Si vous voulez un saut de ligne dur, utilisez-en un.
display: block;
.
<br />
élément existe pour une très bonne raison. Si vous voulez le saut de ligne parce que ce sont des paragraphes séparés, marquez-les simplement comme des paragraphes séparés.