Como alterar a altura de um arquivo?


263

Eu tenho um grande parágrafo de texto que é dividido em parágrafos com <br>'s:

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

Eu quero aumentar a diferença entre esses parágrafos, como se houvesse dois <br>ou algo assim. Eu sei que a maneira certa de fazer isso é usar <p></p>, mas agora não posso alterar esse layout, então estou procurando uma solução somente CSS.

Eu tentei configuração <br>'s line-heighte heightcom display: block, eu também pesquisei e Stack Overflow-ed brevemente, mas não encontrou qualquer solução. Isso é possível sem alterar o layout?


Sua formatação pode aumentar a confusão ao pensar que as tags br tinham um valor de altura. Como indicado abaixo, eles são simplesmente quebras de linha. Você já tentou fazer algo semelhante no seu processador de texto?
Jörg

Alterar a altura da árvore é semanticamente errado. <br> significa que você acabou de colocar outra linha no texto e um único parágrafo deve ter altura de linha fixa. Se algum texto for separado, deverá ser um parágrafo separado.
Robo Robok


1
@JohnHenckel um pouco enganador, uma vez <p>tags não podem conter <div>tags de ver este post
deseosuho

1
Às vezes, o código que recebemos para formatar não é algo sobre o qual temos controle. É nesses momentos que você começa a dizer para si mesmo "Não consigo adicionar tags <p> ... talvez se eu apenas altere a altura dos vídeos que estão sendo usados ​​como espaçadores.
Brian

Respostas:


275

Css:

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

A solução provavelmente não é compatível com vários navegadores, mas é pelo menos algo. Considere também a configuração line-height:

line-height:22px;

Para o Google Chrome, considere a configuração content:

content: " ";

Fora isso, acho que você está preso a uma solução JavaScript.


31
Isso NÃO funciona em: IE7, Opera10, Chrome2. No Firefox, ele cria a margem de tamanho duplo. Você precisa especificarmargin-top: 10px;
temor

8
Adicionar um content:" "atributo a esse estilo e funciona bem no Chrome
anushr

8
Esta solução funciona no Firefox. Para navegadores baseados em webkit, você pode adicionar line-height. No final, é algo parecido br { display:block; margin-top:10px; line-height:22px; }.
Cthulhu

2
@we: Uma solução melhor seria margin:10px 0 0, para aqueles que não a querem em tamanho duplo.
Kayla

1
Não funciona para mim ... Eu também tentei @ código de temor margin-top: 10px;, ainda não funcionou ....
Cardinal - Reintegrar Monica

67

Aqui está a solução correta que realmente oferece suporte a vários navegadores:

  br {
        line-height: 150%;
     }

1
Não o IE7, tanto quanto eu posso dizer.
Serhiy

30
Isso funciona para aumentar a altura de uma quebra de linha, mas não para diminuí- la.
Plutão

2
@htmldrum Quando você não tem chance de alterar o HTML, mas apenas o CSS, isso funciona muito bem. Obrigado! Isso deve ser atualizado e considerado a resposta correta. Eu acho que.
Flaschbier 01/09/2015

@ Pluto: a resposta de nigel abaixo funciona para eu diminuir a altura!
Anupam

2
Infelizmente, não está mais funcionando no Chrome v.76. Para o Edge e o IE, você também precisa adicionar o alinhamento vertical: top. Eu publiquei uma solução aqui: stackoverflow.com/a/29674365/562862
Dave Burton

48

Então, as pessoas acima têm basicamente uma resposta semelhante, mas aqui é muito sucinta. Funciona no Opera, Chrome, Safari e Firefox, provavelmente no IE também?

br {
            display: block; /* makes it have a width */
            content: ""; /* clears default height */
            margin-top: 0; /* change this to whatever height you want it */
}

3
Este. Isso está correto, em relação à pergunta conforme declarado. E também é a única resposta na página que realmente fez o que eu precisava.
Xodarap777

Nenhuma das outras respostas funcionou para mim até eu modificar o conteúdo. Esta é a resposta correta, IMO.
Xandor 16/10/19

39

Outra maneira é usar um RH . Mas, e aqui está a parte astuta, torne-o invisível.

Portanto:

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

Para fazer uma quebra de BR mais limpa, simulada usando o HR: Btw funciona em todos os navegadores !!

{ height:2px; visibility:hidden; margin-bottom:-1px; }

1
Eu tive que adicionar margem: 0px para o IE8
IvanH

34
Isso é abuso horrendo de tags HTML, melhor usar um <p></p>com margens, em seguida, destruir um<hr />
Serj Sagan

Este truque é bom, mas para obter resultado mais preciso, você tem que margem de utilização: 0 e border: 0.
MAChitgarha

25

Tanto quanto sei <br>, não tem altura, apenas força uma quebra de linha. O que você tem é um texto com algumas quebras de linha, além das quebra automática, não parágrafos. Você pode alterar o espaçamento entre linhas, mas isso afetará todas as linhas.


1
Parece que não há realmente nenhuma maneira. Eu até tentei jogar com: before e: after properties, mas ... :(
n1313

1
Eu sei que isso é super antigo, mas @Isaac Minogue tem uma maneira válida de fazer isso. Modificar a contentpropriedade faz o truque.
Xandor 16/10/19

22

Acabei de ter esse problema e resolvi-o usando

<div style="line-height:150%;">
    <br>
</div>

Isso funciona muito bem e também fica em torno a limitação da resposta de @ htmldrum
Anupam

11

você pode aplicar a altura da linha nesse <p>elemento, para que as linhas se tornem maiores.


4
Sim, claro, mas não é isso que eu quero.
N1313 11/09

1
De que maneira isso difere do que você deseja? Aumentará o espaço entre as linhas.
Jörg

Tenho um pouco mais de nove blá no meu texto. Imagine vários kilobytes de texto, divididos em três blocos com três caracteres.
N1313 11/09

Se você aplicar o line-height para o <br>tag, então as quebras de linha forçadas será maior do que as quebras de linha embrulhadas ...
peirix

1
Soa mais como você quer três parágrafos em vez de usar <br/>
Chris Chilvers

7

Eu nunca experimentei o pseudoelemento :before/ :afterCSS2 antes, principalmente porque ele é suportado apenas no IE8 (isso diz respeito aos navegadores IE) . Esta poderia ser a única solução possível de CSS:

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

Aqui está um exemplo no QuirksMode .


Sim, eu tinha grandes esperanças: antes de {content}; também, mas me falhou.
N1313 11/09/09

Injete em algum lugar, deve funcionar. Infelizmente, ele não funciona no IE6 / 7.
Filip Dupanović 11/09/09

5

Pensei que você poderia usar:

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

Mas isso não funcionou no chrome ou no firefox.

Só pensei em mencionar isso, caso ocorresse com mais alguém e eu os salvaria.


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

Funciona no Firefox, Chrome e Safari. Não foi testado no Explorer. (O tablet Windows está sem energia.)

Quebras de linha e tamanho da fonte funcionam de maneira diferente no Firefox e Safari.


Você poderia ser mais específico sobre qual parte do seu css resolveu o problema? Isso ajudará outras pessoas a entender a resposta.
Frank Bryce

Funciona muito bem para mim, obrigado! Mas falta algum tipo de informação.
Vinícius Moraes

4

Curiosamente, se a tag de interrupção for escrita em formato completo da seguinte maneira:

<br></br>

então a altura da linha CSS: 145% funciona. Se a tag de interrupção estiver escrita como:

<br> or 
<br/> 

então não funciona, pelo menos no Chrome, IE e Firefox. Esquisito!


4

O que funciona para mim é adicionar essa linha entre tags de parágrafo ... embora não seja a melhor solução.

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

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

Eu encontrei problemas com PC / Mac com isso ... Ele fornece ao texto a nova altura da linha, mas não quebra a linha ... Você pode fazer alguns testes por conta própria. Desculpe!


trabalhou para mim gerenciar tamanho vertical no nível de pixel dentro de um UIWebView no ios.
precisa saber é o seguinte

Eu encontrei problemas com PC / Mac com isso ... Ele fornece ao texto a nova altura da linha, mas não quebra a linha ... Você pode fazer alguns testes por conta própria. Desculpe!
robinwkurtz

4

E lembre-se de que (mis) usar a <hr>tag conforme sugerido em algum lugar encerrará a <p>tag; portanto, esqueça a solução.
Se f.ex. algo é estilizado no ambiente <p>, esse estilo desaparece pelo restante do conteúdo após a <hr>inserção.


Isso não fornece uma resposta para a pergunta. Para criticar ou solicitar esclarecimentos a um autor, deixe um comentário abaixo da postagem - você sempre pode comentar em suas próprias postagens e, quando tiver reputação suficiente , poderá comentar em qualquer post .
Glitch Desire

Não é uma crítica e nem um pedido. Apenas tentando dizer o que acontecerá se você colocar uma tag hr dentro da tag ap, conforme sugerido. E como novato, não tenho reputação suficiente para comentar sobre o post relevante. Então, por favor, informe de que outra forma devo fazer esse comentário (que IMHO é altamente relevante em relação à questão).
Niels

4

Aqui está uma solução que funciona no IE, Firefox e Chrome. A idéia é aumentar o tamanho da fonte do elemento br do tamanho do corpo de 14px para 18px e diminuir o elemento em 4px para que o tamanho extra fique abaixo da linha de texto. O resultado é 4px de espaço em branco extra abaixo do br.

br 
{ 
font-size: 18px; 
vertical-align: -4px; 
}  

Apenas usar vertical-alignparece fazer o truque com a brtag. Eu testei isso no IE 11.

3

ATUALIZADO 13 de setembro de 2019:

Costumo <br class=big>fazer uma quebra de linha de grandes dimensões, quando preciso. Até hoje, eu denominei assim:

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

(Isso vertical-align:topera necessário apenas para o IE e o Edge.)

Isso funcionou em todos os principais navegadores que tentei: Chrome, Firefox, Opera, Brave, PaleMoon, Edge e IE11.

No entanto, recentemente parou de funcionar em navegadores baseados no Chrome : minhas "grandes" quebras de linha se transformaram em quebras de linha de tamanho normal.

(Não sei exatamente quando eles o quebraram. Em 12 de setembro de 2019, ele ainda funciona no meu Chromium Portable 55.0.2883.11 desatualizado, mas está quebrado no Opera 63.0.3368.71 e no Chrome 76.0.3809.132 (ambos Windows e Android).)

Após algumas tentativas e erros, acabei com o seguinte substituto, que funciona nas versões atuais de todos esses navegadores:

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

Notas:

line-height:190% funciona em tudo, exceto nas versões recentes dos navegadores baseados no Chrome.

vertical-align:topé necessário para o IE e o Edge (em combinação com line-height:190%), para obter o espaço extra após a linha anterior, onde pertence, em vez de parcialmente antes e parcialmente depois.

display:block;content:"";margin-top:0.5em funciona no Chrome, Opera e Firefox, mas não no Edge e no IE.

Uma maneira alternativa (mais simples) de adicionar um pouco de espaço vertical extra após uma <br>tag, se você não se importa em editar o HTML, é com algo assim. Funciona bem em todos os navegadores:

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

(Você pode, é claro, ajustar "-37%" conforme necessário, para uma lacuna maior ou menor.) Aqui está uma página de demonstração que inclui algumas outras variações sobre o tema:

https://burtonsys.com/a_little_extra_vertical_space_for_br_tag.html



28 de maio de 2020:

Eu atualizei a página de demonstração; agora demonstra todas as técnicas acima:

https://burtonsys.com/a_little_extra_vertical_space_for_br_tag.html


2

Michael e Yoda estão certos. O que você pode fazer é usar a <p>tag, que, sendo uma tag de bloco, usa uma margem inferior para compensar o bloco a seguir, para que você possa fazer algo semelhante a isso para aumentar o espaçamento:

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

Outra alternativa é usar a <hr>tag block , com a qual você pode definir explicitamente a altura do espaçamento.


1
Obrigado por sua resposta, mas afirmei que não posso alterar esse layout no momento. Claro, vou mudar para algo mais saudável quando for possível, mas agora - desculpe.
N1313 11/09

1

<br />ocupará tanto espaço quanto sua linha cheia de texto <p>, você não pode mudar isso. Se você deseja maior, significa que deseja separar em parágrafo, então adicione outro <p>. Não se esqueça de ser o mais semântico que puder;)


1

você também pode usar a propriedade "block-quote" em CSS. Isso faria com que não afetasse suas linhas individuais, mas permite definir parâmetros apenas para as quebras entre parágrafos ou "aspas em bloco".

UPDATE:
Estou corrigido. "blockquote" é na verdade uma propriedade html. Você o usa exatamente como <p> e </ p> em torno do seu trabalho. Você pode então definir os parâmetros para sua cotação em bloco em css como

blockquote { margin-top: 20px }

Espero que isto ajude. É semelhante à configuração dos parâmetros no br e pode ou não ser compatível com vários navegadores.


Esta é a primeira vez que ouvi falar dessa propriedade. Você pode explicar isso com mais detalhes, por favor?
N1313 11/09

Eu estou corrigido. "blockquote" é na verdade uma propriedade html. Você o usa exatamente como <p> e </ p> em torno do seu trabalho. Você poderia, então, definir os parâmetros para o seu bloco de citação em css como blockquote {margin-top: 20px} etc etc etc
Jonn

1

Você não parece capaz de ajustar a altura de um BR, mas pode fazê-lo desaparecer de forma confiável usando o display: none

Passei por esta página enquanto procurava uma solução para o seguinte:

Eu tenho uma situação em que o gateway de pagamento de terceiros (Worldpay) apenas permite que você personalize suas páginas de pagamento com 10k no máximo de CSS e HTML (nenhum script permitido) que são injetados no corpo do modelo e depois de algumas tags BR, FONT etc. Juntamente com o DTD, que força o IE7 / 8 no modo Quirks, isso torna a personalização entre navegadores o mais difícil possível!

Desativar o BR torna as coisas muito mais consistentes ...


1

i Use esses métodos, mas não sei se o navegador cruzado

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

br {
    display:none;
}

OU

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

OU

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

br:after { content: "" }
br { content: "" }

voto positivo para exibição: nenhum. foi o que acabei fazendo!
Brian

1

Tente usar o line-heightatributo CSS na sua ptag que contém a brtag. Lembre-se de que você pode usar idsuas ptags se quiser isolá-las, embora seja melhor usar um divIMO para isolamento.


1

Desculpe se alguém já disse isso, mas a solução simples é brincar com a sua "altura da linha". Se você está recebendo muito espaço ao usar uma quebra de linha, é simplesmente porque a altura da sua linha está muito alta. Você pode corrigir isso no CSS (mas saiba que isso afetará tudo o que usa essa propriedade) ou pode fazer um estilo embutido para substituir o CSS.


Isso não fornece uma resposta para a pergunta. Para criticar ou solicitar esclarecimentos a um autor, deixe um comentário abaixo da postagem - você sempre pode comentar em suas próprias postagens e, quando tiver reputação suficiente , poderá comentar em qualquer post . - Do comentário
JRodDynamite 28/11

Discordo. A questão dos OPs era como ajustar a altura de uma quebra de linha. Você não pode, então você ajusta a altura da linha para alcançar o efeito desejado.
precisa

1

Eu tive que desenvolver uma solução para converter HTML em PDF e centralizar verticalmente o texto nas células da tabela, mas nada funcionou, exceto inserir a planície <br>

Então, pensando fora da caixa, mudei o tamanho vertical ajustando o tamanho da fonte (em pt).

<font style="font-size: 4pt"><br></font>

0
<span style="line-height:40px;"><br></span> 

Você precisaria fazer isso em linha e em cada
elemento, mas ele deve funcionar na maioria dos navegadores. Use a altura da linha para obter o efeito desejado. Se você o alinhar em cada elemento, ele deve funcionar na maioria dos navegadores e e-mail (mas isso é muito complexo para discutir aqui).


1
Então, por que postar isso se você não vai dar exemplos? A idéia do site é que você faça discutir o assunto.
Paul

0

Isso funcionou para mim quando não consegui que o espaçamento de estilos funcionasse na tag span:

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

0

Usar <div>

<div>Content 1</div>Content 2

Isso permite uma nova linha sem espaço vertical.

Isso se torna

<div>Content 1</div>Content 2


0

Respondendo em um nível mais geral para quem chegou aqui, pois está corrigindo problemas no espaçamento causado pela <br>tag. Eu tenho que fazer muitas redefinições para chegar perto do pixel perfeito.

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

Para a questão específica que eu estava abordando, eu precisava ter um espaço específico nas entrelinhas. Eu adicionei uma margem na parte superior e inferior.

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

0

Consegui fazê-lo funcionar no IE7 usando uma combinação de soluções, mas principalmente envolvendo o Br no DIV, como Nigel e outros sugeriram. Identificação adicionada e executada em = "server" para que eu pudesse remover o BR ao remover a caixa de seleção da linha de caixas de seleção.

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

0

Pode estar usando duas tags br, é a solução mais simples que funciona com todos os navegadores. Mas é repetitivo.

<p>
content
</p>
<br /><br />
<p>
content
</p>
<br /><br />
<p>
content
</p>

0

Que tal apenas adicionar um parágrafo em vez da quebra de linha dessa maneira

bla la la bla bla la la bla bla abla la la bla bla

bla la la bla bla la la bla bla abla la la bla bla

bla la la bla bla la la bla bla abla la la bla bla

Depois, você pode especificar a altura da linha ou o preenchimento ou o que for


Sim, eu defini a classe "grande" para <br> e <p>. "<br class=big>" adiciona espaço entre linhas e "<p class = big>" adiciona espaço antes de um parágrafo: ‍‍ ‍‍ br.big {display: block; conteúdo:""; margem superior: 0.5em; altura da linha: 190%; vertical-align: top;} ‍‍. p.big {margin-top: 1.5em} ‍‍‍‍‍‍ ‍‍ Mas um problema com a tag <p> é que ela é denominada de maneira inconsistente pelos programas de email. Quando o texto do email que contém quebras de parágrafos é "citado" nas respostas, o espaçamento entre parágrafos geralmente muda drasticamente. Então, eu tenho o hábito de usar quebras de linha dobradas (ctrl-enter no gmail), em e-mails.
Dave Burton
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.