¿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?


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.


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%;
     }

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 */
}

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; }

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.


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>

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.


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 .


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.


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.


¿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!


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!


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.


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; 
}  

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


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.


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;)


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.


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 ...


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: "" }

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.


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.


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>

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í).


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>

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


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;
}

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>

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>

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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.