Como adicionar uma linha horizontal
Coloque <hr> entre dois blocos de conteúdo. Ela não tem tag de fechamento:
Por padrão a linha ocupa toda a largura do contêiner, tem uma pequena margem acima e abaixo e é desenhada como uma borda inset cinza fina (uma borda clara e uma escura).
<hr> vem de horizontal rule. No HTML ela significa uma quebra temática: uma mudança de assunto ou de cena dentro de uma seção. Os leitores de tela a anunciam como separador. Se você só quer uma linha decorativa (embaixo de um título, em volta de um card), desenhe-a com uma borda CSS nesse elemento.
Estilizando um hr com CSS
A aparência padrão vem das bordas, então o jeito confiável de estilizar um <hr> é removê-las e desenhar uma borda você mesmo:
| Para mudar | Use |
|---|---|
| Cor | border-top: 2px solid #2563eb (depois de border: none) |
| Espessura | A largura dessa borda, como 6px |
| Estilo | solid, dashed, dotted, double |
| Comprimento | width: 40%, mais margin-inline: auto para centralizar |
| Pontas arredondadas | height + background + border-radius em vez de uma borda |
| Espaço em volta | margin |
Definir só color: blue num hr muda a linha nos navegadores atuais, mas o estilo inset padrão a sombreia e ela mantém 2px de altura. Zerar a borda dá exatamente o que você pede.
Atributos antigos do hr
Código antigo usa atributos na própria tag:
<hr size="4" width="50%" color="red" noshade align="left">
size, width, color, noshade e align estão obsoletos. Os navegadores ainda os aplicam para que páginas antigas fiquem certas, mas são HTML inválido e mais difíceis de mudar depois. Troque pelo CSS acima.
Um divisor com texto no meio
A linha com "ou" entre dois botões de login não é um <hr> (um hr não pode conter texto). É uma linha flex com um traço desenhado de cada lado da palavra:
As duas partes ::before e ::after pegam cada uma metade do espaço livre com flex: 1 e desenham uma borda superior. Troque or por uma palavra mais longa e as linhas encolhem para caber.
Linhas verticais
Não existe versão vertical do <hr>. Desenhe uma linha vertical com uma borda num lado de um elemento, ou com um elemento fino dentro de uma linha flex:
border-inline-start coloca a linha no início do texto, que é a esquerda em português e a direita em árabe ou hebraico, então o layout funciona nas duas direções.
Erros comuns
- Escrever
</hr>.<hr>é um elemento vazio.<hr>ou<hr />é tudo de que você precisa. - Usar
<hr>como decoração. Os leitores de tela anunciam cada um. Uma linha só visual pertence ao CSS. - Estilizar só com
color. Zere a borda comborder: nonee definaborder-top. - Usar
<br>ou sublinhados para desenhar linhas. Use<hr>ou uma borda. Veja quebra de linha para saber para que serve o<br>. - Usar atributos obsoletos. Leve
size,width,colorenoshadepara o CSS.
Perguntas frequentes
Como colocar uma linha horizontal no HTML?
Use a tag <hr> numa linha própria. É um elemento vazio, sem tag de fechamento, e desenha uma linha em toda a largura do seu contêiner.
Como mudar a cor de um hr?
Remova a borda padrão e desenhe a sua: hr { border: none; border-top: 2px solid #2563eb; }. Definir só color também muda a linha, mas o estilo inset padrão a mantém sombreada e em dois tons.
Como deixar um hr mais grosso?
Defina a largura da borda: hr { border: none; border-top: 4px solid #111827; }. O atributo size dos tutoriais antigos ainda funciona nos navegadores, mas está obsoleto, então use CSS.
O que significa hr?
Horizontal rule, linha horizontal. No HTML atual ela significa uma quebra temática: uma mudança de assunto ou de cena entre parágrafos. Os leitores de tela a anunciam como separador.
Como fazer uma linha vertical no HTML?
O HTML não tem tag de linha vertical. Adicione uma borda a um lado de um elemento, como border-inline-start: 2px solid #e5e7eb, ou use um elemento estreito com cor de fundo dentro de uma linha flex.