Wie ändere ich die Höhe eines <br>?

263

Ich habe einen großen Textabschnitt, der in Unterabsätze mit <br>'s unterteilt ist:

<p>
  Blah blah blah.
  <br/>
  Blah blah blah. Blah blah blah. Blah blah blah.
  <br/>
  Blah blah blah.
</p>

Ich möchte die Lücke zwischen diesen Unterabschnitten vergrößern, als gäbe es zwei <br>oder so etwas. Ich weiß, dass der richtige Weg dazu die Verwendung ist <p></p>, aber im Moment kann ich dieses Layout nicht ändern, daher suche ich nach einer Nur-CSS-Lösung.

Ich habe versucht Einstellung <br>‚s line-heightund heightmit display: block, auch ich gegoogelt und Stack - Überlauf-ed kurz, aber fand keine Lösung finden. Ist das überhaupt möglich, ohne das Layout zu ändern?

n1313
quelle
Ihre Formatierung kann zu der Verwirrung führen, dass br-Tags einen Höhenwert haben. Wie unten ausgeführt, handelt es sich lediglich um Zeilenumbrüche. Haben Sie versucht, in Ihrem Textverarbeitungsprogramm etwas Ähnliches zu tun?
Jörg
Das Ändern der Höhe von <br> ist semantisch falsch. <br> bedeutet, dass Sie Ihrem Text nur eine weitere Zeile hinzufügen und ein einzelner Absatz eine feste Zeilenhöhe haben sollte. Wenn ein Text getrennt ist, sollte es sich um einen separaten Absatz handeln.
Robo Robok
1
@ JohnHenckel Ein bisschen irreführend, da <p>Tags keine <div>Tags enthalten können, siehe diesen Beitrag
deseosuho
1
Manchmal haben wir keine Kontrolle über den Code, den wir zum Formatieren erhalten haben. In diesen Zeiten sagen Sie sich: "Ich kann keine <p> -Tags hinzufügen ... vielleicht, wenn ich nur die Höhe der <br> ändere, die stattdessen als Abstandshalter verwendet werden.
Brian

Antworten:

275

CSS:

br {
   display: block;
   margin: 10px 0;
}

Die Lösung ist wahrscheinlich nicht browserübergreifend kompatibel, aber zumindest etwas. Beachten Sie auch die Einstellung line-height:

line-height:22px;

Beachten Sie für Google Chrome die folgenden Einstellungen content:

content: " ";

Abgesehen davon denke ich, dass Sie mit einer JavaScript-Lösung nicht weiterkommen.

Duroth
quelle
31
Dies funktioniert NICHT in: IE7, Opera10, Chrome2. In Firefox wird der Rand doppelt so groß erstellt. Sie müssen angebenmargin-top: 10px;
Ehrfurcht
8
Fügen Sie content:" "diesem Stil ein Attribut hinzu und es funktioniert gut in Chrome
anushr
8
Diese Lösung funktioniert in Firefox. Für Webkit-basierte Browser können Sie hinzufügen line-height. Am Ende ist es so etwas wie br { display:block; margin-top:10px; line-height:22px; }.
Cthulhu
2
@awe: Eine bessere Lösung wäre margin:10px 0 0für diejenigen, die nicht wollen, dass es doppelt so groß ist.
Kayla
1
Funktioniert nicht für mich ... Ich habe auch @ awe's Code ausprobiert margin-top: 10px;, habe immer noch nicht funktioniert ...
Kardinal - Reinstate Monica
67

Hier ist die richtige Lösung, die tatsächlich browserübergreifende Unterstützung bietet:

  br {
        line-height: 150%;
     }
htmldrum
quelle
1
Soweit ich das beurteilen kann, nicht IE7.
Serhiy
30
Dies dient dazu, die Höhe eines Zeilenumbruchs zu erhöhen, aber nicht zu verringern .
Pluto
2
@htmldrum Wenn Sie keine Möglichkeit haben, den HTML-Code zu ändern, sondern nur das CSS, funktioniert dies hervorragend. Danke dir! Dies sollte positiv bewertet und als die richtige Antwort angesehen werden. Meiner Ansicht nach.
Flaschbier
@Pluto: Nigels Antwort unten funktioniert für mich, um die Höhe zu verringern!
Anupam
2
Funktioniert leider nicht mehr in Chrome v.76. Für Edge und IE müssen Sie außerdem vertikal ausrichten: oben. Ich habe hier eine Lösung gepostet: stackoverflow.com/a/29674365/562862
Dave Burton
48

Die obigen Blicke haben also im Grunde eine ähnliche Antwort, aber hier ist es sehr prägnant. Funktioniert in Opera, Chrome, Safari und Firefox, höchstwahrscheinlich auch im Internet Explorer?

br {
            display: block; /* makes it have a width */
            content: ""; /* clears default height */
            margin-top: 0; /* change this to whatever height you want it */
}
Isaac Minogue
quelle
3
Dies. Dies ist in Bezug auf die angegebene Frage richtig. Und es ist auch die einzige Antwort auf der Seite, die tatsächlich das getan hat, wofür ich es brauchte.
Xodarap777
Keine der anderen Antworten hat bei mir funktioniert, bis ich den Inhalt geändert habe. Dies ist die richtige Antwort, IMO.
Xandor
39

Eine andere Möglichkeit ist die Verwendung einer Personalabteilung . Aber, und hier ist der listige Teil, machen Sie es unsichtbar.

So:

<hr style="height:30pt; visibility:hidden;" />

Um eine sauberere BR-Pause mit der HR zu simulieren: Btw funktioniert in allen Browsern !!

{ height:2px; visibility:hidden; margin-bottom:-1px; }
Simon Smith
quelle
1
Ich musste Rand hinzufügen: 0px für IE8
IvanH
34
Das ist ein schrecklicher Missbrauch von HTML-Tags, besser ein <p></p>mit Rändern zu verwenden, als ein<hr />
Serj Sagan
Dieser Trick ist gut, aber um das Ergebnis genauer zu erhalten, müssen Sie Rand: 0 und Rand: 0 verwenden.
MAChitgarha
25

Soweit ich weiß <br>nicht , haben eine Höhe, zwingt sie lediglich einen Zeilenumbruch. Was Sie haben, ist ein Text mit einigen Zeilenumbrüchen zusätzlich zu den Zeilenumbrüchen, keine Unterabsätze. Sie können den Zeilenabstand ändern, dies wirkt sich jedoch auf alle Zeilen aus.

Michael Borgwardt
quelle
1
Es scheint, dass es wirklich keinen Weg gibt. Ich habe sogar versucht, mit: vor und: nach Eigenschaften zu spielen, aber ... :(
n1313
1
Ich weiß, dass dies super alt ist, aber @Isaac Minogue hat eine gültige Methode, dies zu tun. Das Ändern der contentEigenschaft reicht aus.
Xandor
22

Ich hatte gerade dieses Problem und habe es mithilfe von umgangen

<div style="line-height:150%;">
    <br>
</div>
Nigel
quelle
Dies funktioniert hervorragend und umgeht auch die Einschränkung der Antwort von @ htmldrum
Anupam
11

Sie können die Zeilenhöhe auf dieses <p>Element anwenden , damit die Linien größer werden.

Yoda
quelle
4
Ja sicher, aber das ist nicht was ich will.
n1313
1
Inwiefern würde sich das von dem unterscheiden, was Sie wollen? Dadurch wird der Abstand zwischen den Zeilen vergrößert.
Jörg
Ich habe etwas mehr als neun Bla in meinem Text. Stellen Sie sich mehrere Kilobyte Text vor, unterteilt in drei Blöcke mit drei <br>.
n1313
Wenn Sie die <br>
Zeilenhöhe
1
Klingt eher so, als ob Sie drei Absätze möchten, anstatt <br/> zu verwenden
Chris Chilvers
7

Ich habe das nicht ausprobiert :before:after Pseudoelement / CSS2 , hauptsächlich, weil es nur in IE8 unterstützt wird (dies betrifft IE-Browser) . Dies könnte die einzig mögliche CSS-Lösung sein:

br:before {
    display: block;
    margin-top: 10px;
    content: "";
}

Hier ist ein Beispiel für QuirksMode .

Filip Dupanović
quelle
Ja, ich hatte große Hoffnungen auf: vor {content}; auch, aber es hat mich gescheitert.
n1313
Injizieren Sie es irgendwo, es sollte funktionieren. Leider funktioniert es nicht in IE6 / 7.
Filip Dupanović
5

Ich hatte einen Gedanken, den Sie vielleicht verwenden könnten:

br:after {
    content: ".";
    visibility: hidden;
    display: block;
}

Aber das funktionierte nicht auf Chrom oder Firefox.

Ich dachte nur, ich würde das erwähnen, falls es jemand anderem einfällt, und ich würde ihnen den Ärger ersparen.

Sam Lowry
quelle
5
br {   
    content: "";
    margin: 2em;
    display: block;
    margin-bottom: -20px; 
 }

Funktioniert in Firefox, Chrome und Safari. Wurde nicht im Explorer getestet. (Windows-Tablet ist stromlos.)

Zeilenumbrüche und Schriftgrößen funktionieren in Firefox & Safari anders.

DeFliGra
quelle
Könnten Sie genauer sagen, welcher Teil Ihres CSS das Problem gelöst hat? Dies wird anderen helfen, die Antwort zu verstehen.
Frank Bryce
Arbeite ziemlich gut für mich, danke! Es fehlen aber irgendwelche Informationen.
Vinícius Moraes
4

Interessanterweise, wenn das break-Tag wie folgt in voller Form geschrieben ist:

<br></br>

dann funktioniert die CSS-Zeilenhöhe: 145%. Wenn das break-Tag wie folgt geschrieben ist:

<br> or 
<br/> 

dann funktioniert es nicht, zumindest in Chrome, IE und Firefox. Seltsam!

keithphw
quelle
4

Was für mich funktioniert, ist das Hinzufügen dieser Inline zwischen Absatz-Tags ... allerdings nicht die beste Lösung.

<br style="line-height:32px">

-------- Bearbeiten ---------

Ich bin damit auf Probleme mit PC / Mac gestoßen ... Es gibt dem Text die neue Zeilenhöhe, macht aber keinen Zeilenumbruch ... Möglicherweise möchten Sie einige Tests selbst durchführen. Es tut uns leid!

robinwkurtz
quelle
arbeitete für mich, um die vertikale Größe auf Pixelebene in einem UIWebView auf ios zu verwalten.
Diwann
Ich bin damit auf Probleme mit PC / Mac gestoßen ... Es gibt dem Text die neue Zeilenhöhe, macht aber keinen Zeilenumbruch ... Möglicherweise möchten Sie einige Tests selbst durchführen. Es tut uns leid!
Robinwkurtz
4

Und denken Sie daran, dass die (falsche) Verwendung des <hr>Tags, wie irgendwo vorgeschlagen, das <p>Tag beendet. Vergessen Sie also diese Lösung.
Wenn f.ex. Etwas ist auf die Umgebung gestylt <p>, dieser Stil ist für den Rest des Inhalts verschwunden, nachdem das <hr>eingefügt wurde.

niels
quelle
Dies gibt keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlassen Sie einen Kommentar unter seinem Beitrag. Sie können jederzeit Ihre eigenen Beiträge kommentieren. Sobald Sie einen ausreichenden Ruf haben, können Sie jeden Beitrag kommentieren .
Glitch Desire
Keine Kritik und keine Bitte. Ich versuche nur zu sagen, was passieren wird, wenn Sie ein hr-Tag wie vorgeschlagen in ein ap-Tag einfügen. Und als Neuling habe ich nicht genug Ruf, um den entsprechenden Beitrag zu kommentieren. Bitte raten Sie mir, wie ich sonst einen solchen Kommentar abgeben sollte (was meiner Meinung nach in Bezug auf die Frage von hoher Relevanz ist).
Niels
4

Hier ist eine Lösung, die in IE, Firefox und Chrome funktioniert. Die Idee ist, die Schriftgröße des br-Elements von der Körpergröße von 14 Pixel auf 18 Pixel zu erhöhen und das Element um 4 Pixel zu verringern, sodass die zusätzliche Größe unter der Textzeile liegt. Das Ergebnis ist 4px zusätzliches Leerzeichen unter dem br.

br 
{ 
font-size: 18px; 
vertical-align: -4px; 
}  
David Shaked
quelle
Nur mit zu verwenden vertical-alignscheint den Trick mit dem brTag zu tun . Ich habe dies auf IE 11 getestet.
3

AKTUALISIERT am 13. September 2019:

Ich <br class=big>mache einen übergroßen Zeilenumbruch, wenn ich einen brauche. Bis heute habe ich es so gestylt:

br.big {line-height:190%;vertical-align:top}

(Das vertical-align:topwurde nur für IE und Edge benötigt.)

Das funktionierte in allen gängigen Browsern, die ich ausprobiert habe: Chrome, Firefox, Opera, Brave, PaleMoon, Edge und IE11.

Vor kurzem funktionierte es jedoch nicht mehr in Chrome-basierten Browsern : Meine "großen" Zeilenumbrüche wurden zu Zeilenumbrüchen normaler Größe.

(Ich weiß nicht genau, wann sie es kaputt gemacht haben. Ab dem 12. September 2019 funktioniert es immer noch in meinem veralteten Chromium Portable 55.0.2883.11, aber es ist in Opera 63.0.3368.71 und Chrome 76.0.3809.132 (beide Windows) kaputt und Android).)

Nach einigem Ausprobieren habe ich den folgenden Ersatz gefunden, der in den aktuellen Versionen all dieser Browser funktioniert:

br.big {display:block; content:""; margin-top:0.5em; line-height:190%; vertical-align:top;}

Anmerkungen:

line-height:190% funktioniert in allen außer den neuesten Versionen von Chrome-basierten Browsern.

vertical-align:topwird für IE und Edge (in Kombination mit line-height:190%) benötigt, um den zusätzlichen Speicherplatz nach der vorhergehenden Zeile zu erhalten, in die er gehört, und nicht teilweise vor und teilweise nach.

display:block;content:"";margin-top:0.5em funktioniert in Chrome, Opera & Firefox, aber nicht in Edge & IE.

Eine alternative (einfachere) Möglichkeit, nach einem <br>Tag etwas zusätzlichen vertikalen Speicherplatz hinzuzufügen , wenn Sie nichts dagegen haben, den HTML-Code zu bearbeiten, ist so etwas. Es funktioniert gut in allen Browsern:

<span style="vertical-align:-37%"> </span><br>

(Sie können die "-37%" natürlich nach Bedarf anpassen, um eine größere oder kleinere Lücke zu schließen.) Hier ist eine Demoseite, die einige andere Variationen des Themas enthält:

https://burtonsys.com/a_little_extra_vertical_space_for_br_tag.html


28. Mai 2020:

Ich habe die Demoseite aktualisiert. Es werden nun alle oben genannten Techniken demonstriert:

https://burtonsys.com/a_little_extra_vertical_space_for_br_tag.html

Dave Burton
quelle
2

Michael und Yoda haben beide recht. Sie können das <p>Tag verwenden, das als Block-Tag einen unteren Rand verwendet, um den folgenden Block zu versetzen. Sie können also etwas Ähnliches tun, um einen größeren Abstand zu erhalten:

<p>
    A block of text.
</p>
<p>
    Another block
</p>

Eine andere Alternative ist die Verwendung des Block- <hr>Tags, mit dem Sie die Höhe des Abstands explizit definieren können.

Filip Dupanović
quelle
1
Vielen Dank für Ihre Antwort, aber ich habe erklärt, dass ich dieses Layout derzeit nicht ändern kann. Natürlich werde ich es in etwas Vernünftigeres ändern, wenn es möglich ist, aber jetzt - sorry.
n1313
1

<br />nimmt so viel Platz ein wie eine mit Text gefüllte Zeile von Ihnen <p>, das können Sie nicht ändern. Wenn Sie größer sein möchten, bedeutet dies, dass Sie in Absätze trennen möchten. Fügen Sie also weitere hinzu <p>. Vergiss nicht, so semantisch wie möglich zu sein;)

Clement Herreman
quelle
1

Sie können auch die Eigenschaft "Block-Quote" in CSS verwenden. Dies würde dazu führen, dass Ihre einzelnen Zeilen nicht beeinträchtigt werden. Sie können jedoch Parameter nur für die Unterbrechungen zwischen Absätzen oder "Blockzitaten" festlegen.

UPDATE:
Ich stehe korrigiert. "blockquote" ist eigentlich eine HTML-Eigenschaft. Sie verwenden es genau wie <p> und </ p> für Ihre Arbeit. Sie können dann die Parameter für Ihr Blockzitat in CSS wie einstellen

blockquote { margin-top: 20px }

Hoffe das hilft. Es ähnelt dem Einstellen der Parameter auf dem br und ist möglicherweise browserübergreifend kompatibel.

Jonn
quelle
Dies ist das erste Mal, dass ich von dieser Immobilie gehört habe. Können Sie das bitte näher erläutern?
n1313
Ich stehe korrigiert. "blockquote" ist eigentlich eine HTML-Eigenschaft. Sie verwenden es genau wie <p> und </ p> für Ihre Arbeit. Sie können dann die Parameter für Ihr Blockzitat in CSS wie Blockzitat {Rand oben: 20px} usw. usw. usw. festlegen
Jonn
1

Sie scheinen nicht in der Lage zu sein, die Höhe eines BR anzupassen, aber Sie können ihn mithilfe der Anzeige zuverlässig verschwinden lassen: keine

Kam über diese Seite, als ich nach einer Lösung für Folgendes suchte:

Ich habe eine Situation, in der das Zahlungsgateway eines Drittanbieters (Worldpay) nur die Zahlungsseiten mit maximal 10.000 CSS und HTML (kein Skript zulässig) anpassen kann, die in den Hauptteil der Vorlage eingefügt werden, und nach einigen BRs, FONT-Tags usw. In Verbindung mit der DTD, die den IE7 / 8 in den Quirks-Modus versetzt, ist die browserübergreifende Anpassung so schwierig wie möglich!

Durch das Ausschalten von BRs werden die Dinge viel konsistenter ...

Aaron Davidson
quelle
1

Ich benutze diese Methoden, aber ich weiß nicht, ob Cross-Browser

================= Methode 1 ==================

br {
    display:none;
}

ODER

================= Methode 2 ==================

br {
    display: block;
    margin-bottom: 2px;
    font-size:2px;
    line-height: 2px;
}
br:before {
    display: block;
    margin-top: 2px;
    content: "";
}
br:after {
    content: ".";
    visibility: hidden;
    display: block;
}

ODER

================= Methode 3 ==================

br:after { content: "" }
br { content: "" }
T.Todua
quelle
Upvote für die Anzeige: keine. das habe ich letztendlich getan!
Brian
1

Versuchen Sie, das CSS- line-heightAttribut für Ihr pTag zu verwenden, das das brTag enthält . Denken Sie daran, dass Sie idIhre pTags verwenden können, wenn Sie sie isolieren möchten. Es ist jedoch möglicherweise besser div, IMO zur Isolierung zu verwenden.

Drizien
quelle
1

Es tut uns leid, wenn jemand anderes dies bereits gesagt hat, aber die einfache Lösung besteht darin, mit Ihrer "Linienhöhe" herumzuspielen. Wenn Sie bei der Verwendung eines Zeilenumbruchs zu viel Platz erhalten, liegt dies einfach daran, dass Sie die Zeilenhöhe zu hoch eingestellt haben. Sie können dies in CSS korrigieren (aber wissen, dass es sich auf alles auswirkt, was diese Eigenschaft verwendet), oder Sie können einen Inline-Stil ausführen, um das CSS zu überschreiben.

Daniel Siddall
quelle
Dies gibt keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlassen Sie einen Kommentar unter seinem Beitrag. Sie können jederzeit Ihre eigenen Beiträge kommentieren. Sobald Sie einen ausreichenden Ruf haben, können Sie jeden Beitrag kommentieren . - Aus der Überprüfung
JRodDynamite
Ich bin nicht einverstanden. Die Frage des OP war, wie die Höhe eines Zeilenumbruchs angepasst werden kann. Sie können nicht, also passen Sie die Linienhöhe an, um den gewünschten Effekt zu erzielen.
Daniel Siddall
1

Ich musste eine Lösung entwickeln, um HTML in PDF zu konvertieren und den Text vertikal in Tabellenzellen zu zentrieren, aber nichts funktionierte außer der Eingabe der Ebene <br>

Wenn ich über den Tellerrand hinaus denke, habe ich die vertikale Größe durch Anpassen der Schriftgröße (in pt) geändert.

<font style="font-size: 4pt"><br></font>
Damir Olejar
quelle
0
<span style="line-height:40px;"><br></span> 

Sie
müssten dies inline und für jedes Element tun, aber es sollte bei den meisten Browsern funktionieren. Spielen Sie mit der Zeilenhöhe, um den gewünschten Effekt zu erzielen. Wenn Sie es für jedes Element inline machen, sollte es in den meisten Browsern und E-Mails funktionieren (dies ist jedoch zu komplex, um hier diskutiert zu werden).

Liam
quelle
1
Warum also posten, wenn Sie keine Beispiele nennen wollen? Die ganze Idee der Website ist , dass Sie tun es diskutieren.
Paul
0

Dies war der Trick für mich, als ich den Stilabstand vom span-Tag nicht zum Laufen bringen konnte:

        <p style='margin-bottom: 5px' >
            <span>I Agree</span>
        </p>
        <span>I Don't Agree</span>
Gene Bo
quelle
0

Verwenden <div>

<div>Content 1</div>Content 2

Dies ermöglicht eine neue Linie ohne vertikalen Abstand.

Das wird

<div>Content 1</div>Content 2

Josh Ginn
quelle
0

Eine allgemeinere Antwort für alle, die hier gelandet sind, da sie Probleme mit dem Abstand beheben, die durch das <br>Tag verursacht werden . Ich muss viele Resets durchführen, um nahezu pixelgenau zu sein.

br {
    content: " ";
    display: block;
}

Für das spezifische Problem, das ich ansprach, musste ich einen bestimmten Abstand zwischen den Zeilen haben. Ich habe oben und unten einen Rand hinzugefügt.

br {
    content: " ";
    display: block;
    margin: 0.25em 0;
}
JGallardo
quelle
0

Ich habe es in IE7 zum Laufen gebracht, indem ich eine Kombination von Lösungen verwendet habe, aber hauptsächlich das Br in DIV verpackt habe, wie Nigel und andere vorgeschlagen haben. ID hinzugefügt und bei = "Server" ausgeführt, damit ich den BR entfernen kann, wenn das Kontrollkästchen aus der Reihe der Kontrollkästchen entfernt wird.

.narrow {
    display: block;
    margin: 0px;
    line-height: 0px;
    content: " "; 
}
<div class="narrow" run at="server"><br></br></div>
Jon Reedholm
quelle
0

Möglicherweise ist die Verwendung von zwei br-Tags die einfachste Lösung, die mit allen Browsern funktioniert. Aber es wiederholt sich.

<p>
content
</p>
<br /><br />
<p>
content
</p>
<br /><br />
<p>
content
</p>
Miloud Eloumri
quelle
0

Wie wäre es, wenn Sie einfach einen Absatz anstelle des Zeilenumbruchs hinzufügen?

bla la la bla bla abla la la bla bla abla la bla bla a

bla la la bla bla abla la la bla bla abla la bla bla a

bla la la bla bla abla la la bla bla abla la bla bla a

Dann können Sie die Linienhöhe oder die Auffüllung oder was auch immer für dieses p angeben

user7212232
quelle
Ja, ich habe die "große" Klasse sowohl für <br> als auch für <p> definiert. "<br class=big>" fügt Leerzeichen zwischen Zeilen hinzu, und "<p class = big>" fügt Leerzeichen vor einem Absatz hinzu: ‍‍‍‍‍‍ ‍‍ br.big {display: block; Inhalt:""; Rand oben: 0,5 em; Linienhöhe: 190%; vertikal ausrichten: oben;} ‍‍‍‍‍‍ ‍‍ p.big {Rand oben: 1.5em} ‍‍‍‍‍‍ ‍‍ Ein Problem mit dem <p> -Tag ist jedoch, dass es von E-Mail-Programmen inkonsistent gestaltet wird. Wenn E-Mail-Text mit Absatzumbrüchen in E-Mail-Antworten "in Anführungszeichen" gesetzt wird, ändert sich der Abstand zwischen Absätzen häufig drastisch. Daher habe ich die Angewohnheit, doppelte Zeilenumbrüche (Strg-Eingabe in Google Mail) in E-Mails zu verwenden.
Dave Burton