Estoy tratando de hacer una regla horizontal con algo de texto en el medio. Por ejemplo:
----------------------------------- mi título aquí ------------ -----------------
¿Hay alguna manera de hacer eso en CSS? Sin todos los guiones "-" obviamente.
html
css
cross-browser
Jason
fuente
fuente
form
etiqueta?fieldset
ylegend
Respuestas:
Esto es más o menos como lo haría: la línea se crea estableciendo un
border-bottom
en el contenedor yh2
luego dandoh2
un más pequeñoline-height
. El texto se coloca anidadospan
con un fondo no transparente.Probé solo en Chrome, pero no hay razón para que no funcione en otros navegadores.
JSFiddle: http://jsfiddle.net/7jGHS/
fuente
Después de probar diferentes soluciones, he llegado con una válida para diferentes anchos de texto, cualquier fondo posible y sin agregar marcas adicionales.
Lo probé en IE8, IE9, Firefox y Chrome. Puede consultarlo aquí http://jsfiddle.net/Puigcerber/vLwDf/1/
fuente
h1 {
desbordamiento: oculto; `text-align: left; `text-indent: 40px; `}:after
elemento tenga el ancho del bloque. Tengo curiosidad: ¿cuál es exactamente el papel demargin-right: -50%
? Cuando estaba buscando un código, perder esa propiedad haría que la decoración saltara a otra línea. E incluso cuando:after
se le asigna un ancho del 100%, todavía necesito el margen negativo derecho del 50% para que encaje. ¿Por qué?Ok, este es más complicado pero funciona en todo menos IE <8
Los elementos: before y: after están posicionados absolutamente para que podamos tirar uno hacia la izquierda y otro hacia la derecha. Además, el ancho (40% en este caso) es muy dependiente del ancho del texto dentro ... tengo que pensar en una solución para eso. Al menos,
top: 1.2em
se asegura de que las líneas permanezcan más o menos en el centro del texto, incluso si tiene un tamaño de fuente diferente.Sin embargo, parece funcionar bien: http://jsfiddle.net/tUGrf/3/
fuente
form
etiqueta. Si lo hace, como estoy seguro de que sabe, simplemente podría usarfieldset
ylegend
.El método más corto y mejor:
fuente
font-family: monospace;
funcionó bien.Aquí está la solución basada en Flex.
JSFiddle: https://jsfiddle.net/yoshiokatsuneo/3h1fmj29/
fuente
<h1><span>Today</span></h1>
con un margen / relleno en el lapso.para el navegador posterior (hoy en día),
display:flex
ydpseudo-elements
hace que sea fácil dibujar.border-style
,box-shadow
e inclusobackground
ayuda también para el maquillaje.fuente
fuente
Déle un espacio al espacio para que haya más espacio entre el texto y la línea.
Ejemplo: http://jsfiddle.net/tUGrf/
fuente
He estado buscando algunas soluciones para esta decoración simple y he encontrado algunas, algunas extrañas, algunas incluso con JS para calcular la altura de la fuente y bla, bla, bla, luego he leído el uno en esta publicación y lea un comentario de thirtydot hablando
fieldset
ylegend
y pensé que era él.Estoy anulando esos estilos de 2 elementos, supongo que podría copiar los estándares del W3C e incluirlos en su
.middle-line-text
clase (o como quiera llamarlo), pero esto es lo que hice:Aquí está el violín: http://jsfiddle.net/legnaleama/3t7wjpa2/
He jugado con los estilos de borde y también funciona en Android;) (Probado en kitkat 4.XX)
EDITAR:
Siguiendo la idea de Bekerov Artur, que también es una buena opción, he cambiado la imagen .png base64 para crear el trazo con un .SVG para que pueda renderizar en cualquier resolución y también cambiar el color del elemento sin ningún otro software involucrado :)
fuente
Solución para IE8 y más reciente ...
Cuestiones dignas de mención:
Utilizando
background-color
para enmascarar un borde podría no ser la mejor solución. Si tiene un color de fondo (o imagen) complejo (o desconocido), la máscara finalmente fallará. Además, si cambia el tamaño del texto, notará que el color de fondo blanco (o lo que establezca) comenzará a cubrir el texto en la línea superior (o inferior).Tampoco quiere "adivinar" qué tan anchas son las secciones, ya que hace que los estilos sean muy inflexibles y casi imposibles de implementar en un sitio receptivo donde el ancho del contenido está cambiando.
Solución:
( Ver JSFiddle )
En lugar de "enmascarar" un borde con un
background-color
, use sudisplay
propiedad.HTML
CSS
Cambie el tamaño de su texto colocando su
font-size
propiedad en el.group
elemento.Limitaciones:
top
La propiedad del.line
elemento debe ser la mitad deline-height
. Entonces, si tienes unline-height
de1.5em
, entonces eltop
debería ser-.75em
. Esto es una limitación porque no está automatizado, y si está aplicando estos estilos en elementos con diferentes alturas de línea, es posible que deba volver a aplicar suline-height
estilo.Para mí, estas limitaciones superan los "problemas" que noté al comienzo de mi respuesta para la mayoría de las implementaciones.
fuente
Esto le proporciona una longitud fija para las líneas, pero funciona muy bien. Las longitudes de las líneas se controlan agregando o tomando '\ 00a0' (espacio unicode).
fuente
Si alguien se pregunta cómo configurar el encabezado de modo que aparezca con una distancia fija hacia el lado izquierdo (y no centrado como se presentó anteriormente), lo descubrí modificando el código de @ Puigcerber.
Aquí el JSFiddle .
fuente
Esto te ayudara
entre linea
fuente
Utilizo un diseño de tabla para llenar los lados dinámicamente y divisiones de posición absoluta en altura 0 para el posicionamiento vertical dinámico:
https://jsfiddle.net/eq5gz5xL/18/
Descubrí que un poco por debajo del centro verdadero se ve mejor con texto; Esto se puede ajustar donde
55%
está (la altura más alta hace que la barra sea más baja). La apariencia de la línea se puede cambiar donde elborder-bottom
está.HTML:
CSS:
fuente
No para vencer a un caballo muerto, pero estaba buscando una solución, terminé aquí, y no estaba satisfecho con las opciones, sobre todo por alguna razón no pude obtener las soluciones proporcionadas aquí para que funcionaran bien para mí. (Probablemente debido a errores de mi parte ...) Pero he estado jugando con flexbox y aquí hay algo que pude trabajar por mí mismo.
Algunas de las configuraciones están cableadas, pero solo con fines de demostración. Creo que esta solución debería funcionar en casi cualquier navegador moderno. Simplemente elimine / ajuste la configuración fija para la clase .flex-parent, ajuste los colores / texto / material y (espero) que estará tan feliz como yo con este enfoque.
HTML:
También guardé mi solución aquí: https://jsfiddle.net/Wellspring/wupj1y1a/1/
fuente
En caso de que alguien quiera, en mi humilde opinión, la mejor solución usando CSS es por un flexbox.
Aquí hay un ejemplo:
Esto siempre debe dar como resultado un contenido alineado perfectamente centrado con una línea a la izquierda y a la derecha, con un margen fácil de controlar entre la línea y su contenido.
Crea un elemento de línea antes y después de su control superior y los configura en el orden 1,3 en su contenedor flexible mientras configura su contenido como orden 2 (ir en el medio). dar el antes / después de un crecimiento de 1 hará que consuman el espacio más vacante por igual mientras mantienen su contenido centrado.
¡Espero que esto ayude!
fuente
No estoy muy seguro, pero podría intentar usar una regla horizontal y empujar el texto por encima de su margen superior. Necesitará un ancho fijo en su etiqueta de párrafo y un fondo también. Es un poco hacky y no sé si funcionará en todos los navegadores, y debe establecer el margen negativo en función del tamaño de la fuente. Sin embargo, funciona en Chrome.
fuente
He intentado la mayoría de las formas sugeridas, pero termina con algunos problemas como ancho completo o No adecuado para contenido dinámico. Finalmente modifiqué un código y funciona perfectamente. Este código de ejemplo dibujará esas líneas antes y después, y es flexible en el cambio de contenido. Centro alineado también.
HTML
CSS
Resultado: https://jsfiddle.net/fasilkk/vowqfnb9/
fuente
Para mí, esta solución funciona perfectamente bien ...
HTML
<h2 class="strikethough"><span>Testing Text</span></h2>
CSS
fuente
Las personas que usan Bootstrap 4 pueden lograrlo con este método. Las clases mencionadas en el código HTML son de Bootstrap 4.
Y escribe tu HTML así
fuente
Línea horizontal y vertical con palabras en el medio.
Esto también se responde en https://stackoverflow.com/a/57279326/6569224
fuente
Resultado:
fuente