línea horizontal y forma correcta de codificarlo en html, css


122

Necesito dibujar una línea horizontal después de un bloque, y tengo tres formas de hacerlo:

1) Definir una clase h_liney agregarle funciones CSS, como

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

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

2) Usar hretiqueta

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

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

3) afterutilízalo como una pseudoclase

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

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

¿Cuál es la forma más práctica?


2
Creo que <hr>es el más semántico. Quiero decir, ¿no es eso para lo que está destinado?
j08691

3
¿Por qué no usar border-bottom?
jsweazy

3
En HTML5, el elemento HTML <hr> representa una ruptura temática entre elementos de nivel de párrafo (por ejemplo, un cambio de escena en una historia o un cambio de tema con una sección).
Scott Simpson

Respuestas:


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>

Así es como lo hace html5boilerplate :

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

3
Nota: Úselo margin: 1em autosi desea que siempre esté en el centro de la página.
Jacques Marais

1
@JacquesMarais, no estoy seguro de que sea necesario, ya que es un elemento de bloque sin ancho definido, por lo que abarcaría el ancho de todo el contenedor de todos modos.
moettinger

65

Iría por el marcado semántico, use un <hr/>.

A menos que sea solo un borde lo que desea, puede usar una combinación de relleno, borde y margen para obtener el límite deseado.


8
<hr>es válido HTML5. Solía ​​representar una regla horizontal, pero ahora se define en términos semánticos como una ruptura temática entre el contenido. La mayoría de los navegadores lo mostrarán como una línea horizontal a menos que se indique lo contrario. Fuente: developer.mozilla.org/en-US/docs/Web/HTML/Element/hr
AJMaxwell

El título dice línea horizontal y <hr /> es eso, así que subí esto. El título tal vez debería haber leído la línea horizontal con estilo.
Ryan Bayne


10

Si realmente quieres un descanso temático , utiliza la <hr>etiqueta.


Si solo desea una línea de diseño, podría usar algo como la clase css

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

y úsalo como

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

5

Quería un guión largo como línea, así que usé esto.

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


No ha respondido la pregunta "¿Cuál es la más práctica?"
Brian Tompsett - 汤 莱恩

1

Mi solución simple es diseñar hr con css para tener márgenes cero superior e inferior, borde cero, altura de 1 píxel y color de fondo contrastante. Esto se puede hacer estableciendo el estilo directamente o definiendo una clase, por ejemplo, como:

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

1

depende del requisito, pero muchas sugerencias de los desarrolladores es hacer que su código sea lo más simple posible . entonces, ve con la simple etiqueta "hr" y el código CSS para eso.


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 agregue un comentario explicando su respuesta.
Barthy

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.