linha horizontal e maneira correta de codificá-lo em html, css


122

Preciso desenhar uma linha horizontal depois de algum bloco e tenho três maneiras de fazê-lo:

1) Defina uma classe h_linee adicione recursos css, como

#css
.hline { width:100%; height:1px; background: #fff }

#html
<div class="block_1">Lorem</div> <div class="h_line"></div>

2) Use hrtag

#css
hr { width:100%; height:1px; background: #fff }

#html
<div class="block_1">Lorem</div> <hr />

3) use-o como um afterpseudoclasse

#css
.hline:after { width:100%; height:1px; background: #fff; content:"" }

#html
<div class="block_1 h_line">Lorem</div>

Qual o caminho mais prático?


2
Eu acho que <hr>é o mais semântico. Quero dizer, não é para isso que serve?
— J08691

3
por que não usar border-bottom?
— jsweazy

3
No HTML5, o elemento HTML <hr> representa uma quebra temática entre os elementos no nível do parágrafo (por exemplo, uma mudança de cena em uma história ou uma mudança de tópico em uma seção).
— Scott Simpson

Respostas:


138

hr {
    display: block;
    height: 1px;
    border: 0;
    border-top: 1px solid #ccc;
    margin: 1em 0;
    padding: 0;
}
<div>Hello</div>
<hr/>
<div>World</div>

Aqui está como o html5boilerplate faz isso:

hr {
    display: block;
    height: 1px;
    border: 0;
    border-top: 1px solid #ccc;
    margin: 1em 0;
    padding: 0;
}

3
Nota: use margin: 1em autose quiser que ele esteja sempre no centro da página.
— Jacques Marais

1
@JacquesMarais, não sei se isso é necessário, pois é um elemento de bloco sem largura definida, de modo que abrangeria a largura de todo o contêiner.
— moettinger 24/02

65

Eu iria para marcação semântica, use um <hr/>.

A menos que seja apenas uma borda o que você deseja, você pode usar uma combinação de preenchimento, borda e margem para obter o limite desejado.


8
<hr>é HTML5 válido. Utilizado representa uma regra horizontal, mas agora é definido em termos semânticos como uma ruptura temática entre o conteúdo. A maioria dos navegadores ainda o exibirá como uma linha horizontal, a menos que seja dito o contrário. Fonte: developer.mozilla.org/pt-BR/docs/Web/HTML/Element/hr
— AJMaxwell 30/6

O título diz linha horizontal e <hr /> é isso, então eu levanto isso. Talvez o título deva ter lido uma linha horizontal com estilo.
— Ryan Bayne


10

Se você realmente quer uma pausa temática , use a <hr>tag.


Se você quer apenas uma linha de design, pode usar algo como a classe css

.hline-bottom {
    padding-bottom: 10px;
    border-bottom: 2px solid #000; /* whichever color you prefer */
}

e use-o como

<div class="block_1 hline-bottom">Cheese</div>

5

Eu queria um longo traço como linha, então usei isso.

.dash{
        border: 1px solid red;
        width: 120px;
        height: 0px;

}
<div class="dash"></div>


5

.line {
  width: 53px;
  height: 0;
  border: 1px solid #C4C4C4;
  margin: 3px;
  display:inline-block;
}
<html>
<body>
<div class="line"></div>
<div style="display:inline-block;">OR</div>
<div class="line"></div>
</body>
</html>


Você não respondeu à pergunta "Qual é a mais prática?"
— Brian Tompsett -

1

Minha solução simples é estilizar hr com css para ter zero margens superior e inferior, borda zero, altura de 1 pixel e cor de fundo contrastante. Isso pode ser feito definindo o estilo diretamente ou definindo uma classe, por exemplo, como:

.thin_hr {
margin-top:0;
margin-bottom:0;
border:0;
height:1px;
background-color:black;
}

1

depende do requisito, mas muitas sugestões de desenvolvedores são tornar o seu código o mais simples possível . então, use a tag "hr" simples e o código CSS para isso.


0

hr {
    display: block;
    height: 1px;
    border: 0;
    border-top: 1px solid #ccc;
    margin: 1em 0;
    padding: 0;
}
<div>Hello</div>
<hr/>
<div>World</div>
texto enfatizado


Por favor, adicione um comentário explicando sua resposta.
— Barthy 06/02/19

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.