¿Cómo cambiar la altura de una <br>?

263

Tengo un gran párrafo de texto que se divide en subpárrafos con <br>'s:

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

Quiero ampliar la brecha entre estos subpárrafos, como si hubiera dos <br>o algo así. Sé que la forma correcta de hacerlo es usarlo <p></p>, pero en este momento no puedo cambiar este diseño, por lo que estoy buscando una solución solo para CSS.

He tratado de establecer <br>'s line-heighty heightcon el display: block, también en Google y desbordamiento de pila-ed brevemente, pero no encontró ninguna solución. ¿Es esto posible sin cambiar el diseño?

n1313
fuente
Su formato puede aumentar la confusión al pensar que las etiquetas br tienen un valor de altura. Como se señala a continuación, son simplemente saltos de línea. ¿Has intentado hacer algo similar en tu procesador de textos?
Jörg
Cambiar la altura de <br> es semánticamente incorrecto. <br> significa que acaba de poner otra línea en su texto y un solo párrafo debe tener una altura de línea fija. Si algún texto está separado, debería ser un párrafo separado.
Robo Robok
1
@JohnHenckel Un poco engañoso ya que las <p>etiquetas no pueden contener <div>etiquetas ver esta publicación
deseosuho
1
A veces, el código que se nos ha dado para formatear no es algo sobre lo que tengamos control. Es en estos tiempos cuando comienzas a decirte a ti mismo "No puedo agregar etiquetas <p> ... tal vez si solo alteraré la altura de los <br> que se usan como espaciadores.
Brian

Respuestas:

275

Css:

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

La solución probablemente no sea compatible con varios navegadores, pero al menos es algo. También considere configurar line-height:

line-height:22px;

Para Google Chrome, considere configurar content:

content: " ";

Aparte de eso, creo que estás atrapado con una solución de JavaScript.

Duroth
fuente
31
Esto NO funciona en: IE7, Opera10, Chrome2. En Firefox, crea el margen de doble tamaño. Debe especificarmargin-top: 10px;
asombro
8
Agregue un content:" "atributo a ese estilo y funciona bien en Chrome
anushr
8
Esta solución funciona en Firefox. Para los navegadores basados ​​en webkit puede agregar line-height. Al final es algo así br { display:block; margin-top:10px; line-height:22px; }.
Cthulhu
2
@awe: Una mejor solución sería margin:10px 0 0, para aquellos que no lo quieren doble tamaño.
Kayla
1
No funciona para mí ... también probé @ código de asombro margin-top: 10px;, aún no funcionaba ....
Cardinal - Restablecer Mónica
68

Aquí está la solución correcta que en realidad tiene soporte para varios navegadores:

  br {
        line-height: 150%;
     }
htmldrum
fuente
1
No IE7 por lo que puedo decir.
Serhiy
30
Esto funciona para aumentar la altura de un salto de línea, pero no para disminuirlo .
Plutón
2
@htmldrum Cuando no tienes la oportunidad de cambiar el HTML sino solo el CSS, esto funciona muy bien. ¡Gracias! Esto debe ser votado y considerado como la respuesta correcta. Yo creo que.
flaschbier
@Pluto: ¡la respuesta de nigel a continuación funciona para mí para disminuir la altura!
Anupam
2
Desafortunadamente, ya no funciona en Chrome v.76. Para Edge e IE, también debe agregar vertical-align: top. Publiqué una solución aquí: stackoverflow.com/a/29674365/562862
Dave Burton el
48

Entonces, los píos de arriba tienen básicamente una respuesta similar, pero aquí es muy sucinta. Funciona en Opera, Chrome, Safari y Firefox, ¿muy probablemente también en IE?

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
fuente
3
Esta. Esto es correcto, en relación con la pregunta como se indicó. Y también es la única respuesta en la página que realmente hizo lo que necesitaba que hiciera.
Xodarap777
Ninguna de las otras respuestas funcionó para mí hasta que modifiqué el contenido. Esta es la respuesta correcta, OMI.
Xandor
39

Otra forma es usar un HR . Pero, y aquí está la parte astuta, hazla invisible.

Así:

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

Para hacer una ruptura BR más limpia simulada usando el HR: ¡Btw funciona en todos los navegadores!

{ height:2px; visibility:hidden; margin-bottom:-1px; }
Simon Smith
fuente
1
Tuve que agregar margen: 0px para IE8
IvanH
34
Eso es un abuso horrendo de las etiquetas HTML, mejor usar un <p></p>con márgenes que destruir un<hr />
Serj Sagan
Este truco es bueno, pero para obtener resultados más precisos, debe usar el margen: 0 y el borde: 0.
MAChitgarha
25

Por lo que sé <br>, no tiene una altura, simplemente fuerza un salto de línea. Lo que tiene es un texto con algunos saltos de línea además de los ajustes automáticos, no subpárrafos. Puede cambiar el espacio entre líneas, pero eso afectará a todas las líneas.

Michael Borgwardt
fuente
1
Parece que realmente no hay forma. Incluso he intentado jugar con: before y: after properties, pero ... :(
n1313
1
Sé que esto es muy antiguo, pero @Isaac Minogue tiene una forma válida de hacerlo. Modificar la contentpropiedad hace el truco.
Xandor
22

Acabo de tener este problema y lo solucioné usando

<div style="line-height:150%;">
    <br>
</div>
nigel
fuente
Esto funciona muy bien y también evita la limitación de la respuesta de @ htmldrum
Anupam
11

puede aplicar altura de línea en ese <p>elemento para que las líneas se vuelvan más grandes.

yoda
fuente
44
Sí, claro, pero eso no es lo que quiero.
n1313
1
¿De qué manera diferiría de lo que quieres? Aumentará el espacio entre las líneas.
Jörg
Tengo un poco más de nueve bla en mi texto. Imagine varios kilobytes de texto, divididos en tres bloques con tres <br>.
n1313
Si se aplica la línea de altura de la <br>etiqueta, y luego los saltos de línea forzados serán más grandes que los saltos de línea envueltos ...
peirix
1
Suena más como si quisieras tres párrafos en lugar de usar <br/>
Chris Chilvers
7

No he probado el pseudo-elemento :before/ :afterCSS2 antes, principalmente porque solo es compatible con IE8 (esto se refiere a los navegadores IE) . Esta podría ser la única solución CSS posible:

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

Aquí hay un ejemplo en QuirksMode .

Filip Dupanović
fuente
Sí, tenía grandes esperanzas para: antes de {content}; también, pero me falló.
n1313
Inyectarlo en algún lugar, debería funcionar. Por desgracia, no funciona en IE6 / 7.
Filip Dupanović
5

Pensé que podrías usar:

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

Pero eso no funcionó en Chrome o Firefox.

Solo pensé en mencionar eso en caso de que se le ocurriera a alguien más y les ahorraría el problema.

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

Funciona en Firefox, Chrome y Safari. No lo he probado en Explorer. (La tableta de Windows no tiene energía).

Los saltos de línea y el tamaño de fuente funcionan de manera diferente en Firefox y Safari.

DeFliGra
fuente
¿Podría ser más específico sobre qué parte de su CSS resolvió el problema? Esto ayudará a otros a entender la respuesta.
Frank Bryce
Trabaja bastante bien para mí, gracias! Pero le falta algún tipo de información.
Vinícius Moraes
4

Curiosamente, si la etiqueta de rotura se escribe en forma completa de la siguiente manera:

<br></br>

entonces la altura de línea CSS: 145% funciona. Si la etiqueta de ruptura se escribe como:

<br> or 
<br/> 

entonces no funciona, al menos en Chrome, IE y firefox. ¡Extraño!

keithphw
fuente
4

Lo que funciona para mí es agregar esta línea entre las etiquetas de párrafo ... aunque no es la mejor solución.

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

-------- Editar ---------

Me encontré con problemas con PC / Mac con esto ... Le da al texto la nueva altura de línea pero no hace el salto de línea ... Es posible que desee hacer algunas pruebas usted mismo. ¡Lo siento!

robinwkurtz
fuente
funcionó para mí administrar el tamaño vertical a nivel de píxel dentro de un UIWebView en ios.
Diwann
Me encontré con problemas con PC / Mac con esto ... Le da al texto la nueva altura de línea pero no hace el salto de línea ... Es posible que desee hacer algunas pruebas usted mismo. ¡Lo siento!
robinwkurtz
4

Y recuerde que el uso <hr>incorrecto de la etiqueta como se sugiere en alguna parte terminará con la <p>etiqueta, así que olvídese de esa solución.
Si f.ex. algo tiene un estilo en el entorno <p>, ese estilo desaparece para el resto del contenido después de <hr>insertarlo.

Niels
fuente
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones y, una vez que tenga la reputación suficiente , podrá comentar cualquier publicación .
Glitch Desire
No es una crítica ni una solicitud. Solo trato de decir qué sucederá si coloca una etiqueta hr dentro de una etiqueta ap como se sugiere. Y como recién llegado, no tengo suficiente reputación para comentar la publicación relevante. Entonces, por favor, aconsejen de qué otra forma debería hacer ese comentario (que en mi humilde opinión es muy relevante con respecto a la pregunta).
Niels
4

Aquí hay una solución que funciona en IE, Firefox y Chrome. La idea es aumentar el tamaño de fuente del elemento br del tamaño del cuerpo de 14px a 18px, y reducir el elemento en 4px para que el tamaño adicional esté debajo de la línea de texto. El resultado es 4px de espacio en blanco adicional debajo del br.

br 
{ 
font-size: 18px; 
vertical-align: -4px; 
}  
David sacudió
fuente
Solo usar vertical-alignparece hacer el truco con la bretiqueta.
3

ACTUALIZADO el 13 de septiembre de 2019:

Solía <br class=big>hacer un salto de línea de gran tamaño, cuando lo necesito. Hasta hoy, lo peiné así:

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

( vertical-align:topSolo era necesario para IE y Edge).

Eso funcionó en todos los principales navegadores que probé: Chrome, Firefox, Opera, Brave, PaleMoon, Edge e IE11.

Sin embargo, recientemente dejó de funcionar en los navegadores basados ​​en Chrome : mis saltos de línea "grandes" se convirtieron en saltos de línea de tamaño normal.

(No sé exactamente cuándo lo rompieron. A partir del 12 de septiembre de 2019, todavía funciona en mi Chromium Portable 55.0.2883.11 desactualizado, pero está roto en Opera 63.0.3368.71 y Chrome 76.0.3809.132 (ambos Windows y Android).)

Después de algunas pruebas y errores, terminé con el siguiente sustituto, que funciona en las versiones actuales de todos esos navegadores:

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

Notas:

line-height:190% funciona en todo excepto en las versiones recientes de los navegadores basados ​​en Chrome.

vertical-align:topes necesario para IE y Edge (en combinación con line-height:190%), para obtener el espacio extra que viene después de la línea anterior, donde pertenece, en lugar de parcialmente antes y parcialmente después.

display:block;content:"";margin-top:0.5em funciona en Chrome, Opera y Firefox, pero no Edge e IE.

Una forma alternativa (más simple) de agregar un poco de espacio vertical adicional después de una <br>etiqueta, si no le importa editar el HTML, es con algo como esto. Funciona bien en todos los navegadores:

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

(Por supuesto, puede ajustar el "-37%" según sea necesario, para un espacio mayor o menor). Aquí hay una página de demostración que incluye algunas otras variaciones sobre el tema:

https://burtonsys.com/a_little_extra_vertical_space_for_br_tag.html


28 de mayo de 2020:

He actualizado la página de demostración; ahora demuestra todas las técnicas anteriores:

https://burtonsys.com/a_little_extra_vertical_space_for_br_tag.html

Dave Burton
fuente
2

Michael y yoda tienen razón. Lo que puede hacer es usar la <p>etiqueta, que, al ser una etiqueta de bloque, usa un margen inferior para compensar el siguiente bloque, por lo que puede hacer algo similar a esto para obtener un mayor espacio:

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

Otra alternativa es utilizar la <hr>etiqueta de bloque , con la que puede definir explícitamente la altura del espaciado.

Filip Dupanović
fuente
1
Gracias por su respuesta, pero he declarado que no puedo cambiar este diseño en este momento. Por supuesto, lo cambiaré a algo más sano cuando sea posible, pero ahora mismo, lo siento.
n1313
1

<br />ocupará tanto espacio como una fila llena de texto <p>, no puede cambiar eso. Si quieres más grande, significa que quieres separarlo en un párrafo, así que agrega otro <p>. No olvides ser el más semántico posible;)

Clemente Herreman
fuente
1

También puede usar la propiedad "block-quote" en CSS. Eso haría que no afecte a sus líneas individuales, pero le permite establecer parámetros solo para los saltos entre párrafos o "comillas en bloque".

ACTUALIZACIÓN:
Estoy corregido. "blockquote" es en realidad una propiedad html. Lo usas como <p> y </ p> alrededor de tu trabajo. Luego puede establecer los parámetros para su presupuesto de bloque en CSS como

blockquote { margin-top: 20px }

Espero que esto ayude. Es similar a establecer los parámetros en el br y puede o no ser compatible con varios navegadores.

Jonn
fuente
Esta es la primera vez que escucho de esta propiedad. ¿Puedes explicar esto con más detalle, por favor?
n1313
Estoy corregido. "blockquote" es en realidad una propiedad html. Lo usas como <p> y </ p> alrededor de tu trabajo. A continuación, puede establecer los parámetros para su cotización bloque en CSS como blockquote {margin-top: 20px}, etc, etc, etc
Jonn
1

Parece que no puede ajustar la altura de un BR, pero puede hacer que desaparezca de manera confiable usando la pantalla: ninguno

Encontré esta página mientras buscaba una solución para lo siguiente:

Tengo una situación en la que la pasarela de pago de terceros (Worldpay) solo le permite personalizar sus páginas de pago con un máximo de 10k de CSS y HTML (no se permite script) que se inyectan en el cuerpo de su plantilla, y después de algunas BR, etiquetas FONT, etc. Junto con su DTD que fuerza a IE7 / 8 al modo Quirks, ¡esto hace que la personalización entre navegadores sea lo más difícil posible!

Desactivar BR's hace las cosas mucho más consistentes ...

Aaron Davidson
fuente
1

Yo uso estos métodos, pero no sé si el navegador cruzado

================= Método 1 ==================

br {
    display:none;
}

O

================= Método 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;
}

O

================= Método 3 ==================

br:after { content: "" }
br { content: "" }
T.Todua
fuente
voto a favor para mostrar: ninguno. eso es lo que terminé haciendo!
Brian
1

Intente usar el line-heightatributo CSS en su petiqueta que contiene la bretiqueta. Recuerde que puede usar idsus petiquetas si desea aislarlas, aunque podría ser mejor usar un divaislamiento, IMO.

Drizien
fuente
1

Lo siento si alguien más ya dijo esto, pero la solución simple es jugar con tu "altura de línea". Si está obteniendo demasiado espacio cuando usa un salto de línea, es simplemente porque tiene la altura de la línea establecida demasiado alta. Puede corregir esto en CSS (pero sepa que afectará todo lo que use esa propiedad) o puede hacer un estilo en línea para anular el CSS.

Daniel Siddall
fuente
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones y, una vez que tenga la reputación suficiente , podrá comentar cualquier publicación . - De la opinión
JRodDynamite
Estoy en desacuerdo. La pregunta de los OP fue cómo ajustar la altura de un salto de línea. No puede, por lo que ajusta la altura de la línea para lograr el efecto deseado.
Daniel Siddall
1

Tuve que desarrollar una solución para convertir HTML a PDF y centrar verticalmente el texto en las celdas de la tabla, pero nada funcionó excepto ingresar el plano <br>

Entonces, pensando fuera de la caja, he cambiado el tamaño vertical ajustando el tamaño de fuente (en pt).

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

Tendría que hacer esto en línea y en cada
elemento, pero debería funcionar en la mayoría de los navegadores Fiddle con la altura de la línea para obtener el efecto deseado. Si lo hace en línea en cada elemento, debería funcionar en la mayoría de los navegadores y correos electrónicos (pero esto es demasiado complejo para discutirlo aquí).

Liam
fuente
1
Entonces, ¿por qué publicar esto si no vas a dar ejemplos? La idea general del sitio es que lo discutas.
Paul
0

Esto me funcionó cuando no pude lograr que el espacio entre estilos funcionara desde la etiqueta span:

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

Utilizar <div>

<div>Content 1</div>Content 2

Esto permite una nueva línea sin ningún espacio vertical.

Esto se convierte

<div>Content 1</div>Content 2

Josh Ginn
fuente
0

Responde en un nivel más general para cualquiera que aterrizó aquí, ya que están solucionando problemas en el espacio causado por la <br>etiqueta. Tengo que hacer muchos reinicios para acercarme al píxel perfecto.

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

Para el problema específico que estaba abordando, tenía que tener un espacio específico entre líneas. Agregué un margen a la parte superior e inferior.

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

Lo hice funcionar en IE7 usando un combo de soluciones, pero principalmente envolviendo el Br en DIV como lo sugirieron Nigel y otros. Se agregó Id y se ejecutó en = "servidor" para poder eliminar el BR al eliminar la casilla de verificación de la fila de casillas de verificación.

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

Puede estar usando dos etiquetas br es la solución más simple que funciona con todos los navegadores. Pero es repetitivo.

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

¿Qué tal si solo agregamos un párrafo en lugar del salto de línea así?

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

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

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

Luego puede especificar la altura de línea o el relleno o lo que sea para ese p

usuario7212232
fuente
Sí, definí la clase "grande" para <br> y <p>. "<br class=big>" agrega espacio entre líneas, y "<p class = big>" agrega espacio antes de un párrafo: ‍‍‍‍‍‍ ‍‍ br.big {display: block; contenido:""; margen superior: 0.5em; altura de línea: 190%; vertical-align: top;} ‍‍‍‍‍‍ ‍‍ p.big {margin-top: 1.5em} ‍‍‍‍‍‍ ‍‍ Pero un problema con la etiqueta <p> es que los programas de correo electrónico lo diseñan de manera inconsistente. Cuando el texto del correo electrónico que contiene saltos de párrafo se "cita" en las respuestas de correo electrónico, el espacio entre párrafos a menudo cambia drásticamente. Así que tengo la costumbre de usar saltos de línea duplicados (ctrl-enter en gmail), en correos electrónicos.
Dave Burton