La distancia está determinada por una fuente utilizada. Pruebe las fuentes seguras para la web.
Alexei Danchenkov
1
CSS3 tiene muchas propiedades nuevas de decoración de texto en estos días. Consulte alligator.io/css/text-decoration Ejemplo: text-underline-position: under;y text-decoration-skip: ink;tenga en cuenta que esto probablemente no sea compatible con versiones anteriores de navegadores antiguos.
No, pero podrías ir con algo como border-bottom: 1px solid #000y padding-bottom: 3px.
Si desea el mismo color del "subrayado" (que en mi ejemplo es un borde), simplemente omita la declaración de color, es decir, border-bottom-width: 1pxyborder-bottom-style: solid .
Para líneas múltiples, puede ajustar sus textos de líneas múltiples en un espacio dentro del elemento. Por ejemplo <a href="#"><span>insert multiline texts here</span></a>, simplemente agregue border-bottomy paddingen <span>- Demo
Mi único problema con este truco es cuando estoy usando una altura de línea igual a la altura del div y luego vertical-align: middle; para centrarlo, entonces no puedo usar este truco porque entonces el subrayado termina debajo del div.
deweydb
@deweydb: ¿Qué tal si agregamos el relleno inferior al contenedor div también? jsfiddle.net/dYfjc/1
chelmertz
+1 No sabía si dejar fuera la propiedad de color para heredar el color de la fuente, ¡eso ahorrará mucho sudor y lágrimas en el futuro!
Larry
99
No estoy seguro de por qué esta respuesta tiene tantos votos positivos. Esto no funciona completamente con textos multilínea.
3
Para líneas múltiples, puede ajustar sus textos de líneas múltiples en un espacio dentro del elemento. Por ejemplo <a href="#"><span>insert multiline texts here</span></a>, simplemente agregue borde inferior y relleno en el <span>. jsfiddle.net/Aishaterr/vrpb2ey7/1
Daniel Hernández el
133
Actualización 2019: El Grupo de Trabajo de CSS ha publicado un borrador para el nivel 4 de decoración de texto que agregaría una nueva propiedad text-underline-offset(así comotext-decoration-thickness ) para permitir el control sobre la ubicación exacta de un subrayado. Al momento de escribir este artículo, es un borrador en una etapa inicial y no ha sido implementado por ningún navegador, pero parece que eventualmente hará que la siguiente técnica sea obsoleta.
Respuesta original a continuación.
El problema de usar border-bottomdirectamente es que incluso con padding-bottom: 0, el subrayado tiende a ser demasiado lejos del texto para quedar bien. Entonces todavía no tenemos control completo.
Una solución que le brinda precisión de píxeles es usar el :afterpseudo elemento:
Esto no funcionará para mi problema particular, pero este es un truco fantástico. +1
11
Buen trabajo, pero esto no funcionará para las anclas que abarcan varias líneas
Willster
@ last-child Este es mejor que subrayado, pero con el ajuste de texto esto no funcionaría para cada línea
Nishantha
Un problema es que un borde inferior y un subrayado son dos cosas diferentes. Por ejemplo, parte del texto debe extenderse debajo del subrayado. Si aplica un estilo a las etiquetas como botones, no tiene libertad para usar el borde inferior como subrayado.
Anders Lindén
10
Imagine decirle a alguien que es nuevo en el desarrollo web, un diseñador gráfico, un usuario promedio o su madre, que esto es lo que se requiere para agregar un espacio controlado entre el texto y su subrayado, y se preguntarán qué está haciendo con su vida. .
¡Gracias! Si está intentando hacer un subrayado discontinuo y ve que se dibuja sin espacio entre la parte inferior del texto y la línea, esto soluciona el problema.
Jonathan Cross
66
Esta es la respuesta correcta para los navegadores modernos sin ninguna solución.
Compatible con Firefox a partir de 74, según el mismo enlace.
GSerg
11
Entrar en los detalles del estilo visual de text-decoration:underlinees bastante inútil, por lo que tendrá que recurrir a algún tipo de pirateo que elimine text-decoration:underliney reemplace con algo más hasta que una versión mágica y lejana del futuro nos dé más control .
Esto funcionó para mí:
a {background-image: linear-gradient(180deg, rgba(0,0,0,0),
rgba(0,0,0,0)81%,#22222281.1%,#22222285%,
rgba(0,0,0,0)85.1%,
rgba(0,0,0,0));text-decoration: none;}
<ahref="#">Lorem ipsum</a> dolor sit amet, <ahref="#">consetetur sadipscing</a> elitr, sed diam nonumy eirmod tempor <ahref="#">invidunt ut labore.</a>
Si tiene un color de fondo sólido, intente agregar uno delgado text-strokeo text-shadowdel mismo color que el fondo para que los descendientes se vean bien.
Crédito
Esta es una versión simplificada de la técnica que encontré originalmente en https://eager.io/app/smartunderline , pero el artículo ha sido eliminado.
Lamentablemente, el enlace eager.io ya no funciona. ¿Recuerdas cuál fue el truco para hacer que los descendientes se vean mejor?
kano
1
@Kano: creo que estaba usando text-shadow en el mismo color que un fondo sólido.
squarecandy
Además, con la técnica anterior, puede establecer el color del subrayado diferente del texto, por lo que a veces lo configuro para que sea más claro que el texto, lo que hace que las colisiones con los descendientes sean menos problemáticas para la legibilidad.
squarecandy
7
Sé que es una pregunta antigua, pero para la configuración de texto de una sola línea display: inline-blocky luego la configuración me heightha funcionado bien para controlar la distancia entre un borde y el texto.
No necesitaba establecer la altura. Simplemente lo envolví en otro div y, como quería que estuviera centrado, simplemente configuré la alineación de texto en el div de salida.
Guy Lowe
6
@ ¡La respuesta del último hijo es una gran respuesta!
Sin embargo, agregar un borde a mi H2 produjo un subrayado más largo que el texto.
Si está escribiendo dinámicamente su CSS, o si, como yo, tiene suerte y sabe cuál será el texto, puede hacer lo siguiente:
cambiar el contenta algo de la longitud correcta (es decir, el mismo
texto) establezca el color de fuente en transparent(o rgba(0,0,0,0))
para subrayar <h2>Processing</h2>(por ejemplo), cambie el código del último hijo para que sea:
Los H2 son elementos de bloque que podrían explicar por qué el subrayado era más largo que el texto. Tal vez display: inline-blocklo arreglaría. Reemplazar el texto con contentparece un truco que podría romperse de muchas maneras.
Debería usar la propiedad de ancho de borde y la propiedad de relleno. Agregué un poco de animación para que se vea mejor:
body{background-color:lightgreen;}
a{text-decoration:none;color:green;border-style:solid;border-width:0px0px1px0px;transition: all .2s ease-in;}a:hover{color:darkblue;border-style:solid;border-width:0px0px1px0px;padding:2px;}
<ahref='#'>Somewhere ... over the rainbow (lalala)</a> , blue birds, fly... (tweet tweet!), and I wonder (hmm) about what a <i><ahref="#">what a wonder-ful world!</a> World!</i>
Puede reemplazar el segundo 100%por algo más pxo empara ajustar la posición vertical del subrayado. También puede usar calcsi desea agregar relleno vertical, por ejemplo:
Por supuesto, también puede hacer su propio patrón base64 png con otro color, altura y diseño, por ejemplo, aquí: http://www.patternify.com/ - solo configure el ancho y la altura cuadrados en 2x1.
text-underline-position: under;
ytext-decoration-skip: ink;
tenga en cuenta que esto probablemente no sea compatible con versiones anteriores de navegadores antiguos.text-underline-offset
aquí: bugs.chromium.org/p/chromium/issues/…Respuestas:
No, pero podrías ir con algo como
border-bottom: 1px solid #000
ypadding-bottom: 3px
.Si desea el mismo color del "subrayado" (que en mi ejemplo es un borde), simplemente omita la declaración de color, es decir,
border-bottom-width: 1px
yborder-bottom-style: solid
.Para líneas múltiples, puede ajustar sus textos de líneas múltiples en un espacio dentro del elemento. Por ejemplo
<a href="#"><span>insert multiline texts here</span></a>
, simplemente agregueborder-bottom
ypadding
en<span>
- Demofuente
<a href="#"><span>insert multiline texts here</span></a>
, simplemente agregue borde inferior y relleno en el<span>
. jsfiddle.net/Aishaterr/vrpb2ey7/1Actualización 2019: El Grupo de Trabajo de CSS ha publicado un borrador para el nivel 4 de decoración de texto que agregaría una nueva propiedad
text-underline-offset
(así comotext-decoration-thickness
) para permitir el control sobre la ubicación exacta de un subrayado. Al momento de escribir este artículo, es un borrador en una etapa inicial y no ha sido implementado por ningún navegador, pero parece que eventualmente hará que la siguiente técnica sea obsoleta.Respuesta original a continuación.
El problema de usar
border-bottom
directamente es que incluso conpadding-bottom: 0
, el subrayado tiende a ser demasiado lejos del texto para quedar bien. Entonces todavía no tenemos control completo.Una solución que le brinda precisión de píxeles es usar el
:after
pseudo elemento:Al cambiar el
bottom
propiedad (los números negativos están bien), puede colocar el subrayado exactamente donde lo desea.Un problema con esta técnica para tener cuidado es que se comporta un poco raro con los ajustes de línea.
fuente
Puedes usar esto
text-underline-position: under
Consulte aquí para obtener más detalles: https://css-tricks.com/almanac/properties/t/text-underline-position/
Ver también compatibilidad del navegador .
fuente
Esto es lo que funciona bien para mí.
fuente
text-underline-position
no es compatible con Firefox según developer.mozilla.org/en-US/docs/Web/CSS/…Entrar en los detalles del estilo visual de
text-decoration:underline
es bastante inútil, por lo que tendrá que recurrir a algún tipo de pirateo que eliminetext-decoration:underline
y reemplace con algo más hasta que una versión mágica y lejana del futuro nos dé más control .Esto funcionó para mí:
Aquí hay una versión con todas las propiedades patentadas para cierta compatibilidad con versiones anteriores:
Actualización: versión SASSY
Hice una mezcla de scss para esto. Si no usa SASS, la versión normal anterior aún funciona muy bien ...
luego úsalo así:
Actualización 2: Consejo de descendientes
Si tiene un color de fondo sólido, intente agregar uno delgado
text-stroke
otext-shadow
del mismo color que el fondo para que los descendientes se vean bien.Crédito
Esta es una versión simplificada de la técnica que encontré originalmente en https://eager.io/app/smartunderline , pero el artículo ha sido eliminado.
fuente
Sé que es una pregunta antigua, pero para la configuración de texto de una sola línea
display: inline-block
y luego la configuración meheight
ha funcionado bien para controlar la distancia entre un borde y el texto.fuente
@ ¡La respuesta del último hijo es una gran respuesta!
Sin embargo, agregar un borde a mi H2 produjo un subrayado más largo que el texto.
Si está escribiendo dinámicamente su CSS, o si, como yo, tiene suerte y sabe cuál será el texto, puede hacer lo siguiente:
cambiar el
content
a algo de la longitud correcta (es decir, el mismotexto) establezca el color de fuente en
transparent
(orgba(0,0,0,0)
)para subrayar
<h2>Processing</h2>
(por ejemplo), cambie el código del último hijo para que sea:fuente
display: inline-block
lo arreglaría. Reemplazar el texto concontent
parece un truco que podría romperse de muchas maneras.Mira mi violín .
Debería usar la propiedad de ancho de borde y la propiedad de relleno. Agregué un poco de animación para que se vea mejor:
fuente
Una alternativa para textos o enlaces multilínea, puede envolver sus textos en un espacio dentro de un elemento de bloque.
entonces solo puede agregar borde inferior y relleno en el
<span>
.Puede referirse a este violín. https://jsfiddle.net/Aishaterr/vrpb2ey7/2/
fuente
Si tu quieres:
subrayado, puede usar una imagen de fondo de 1 píxel de altura con
repeat-x
y100% 100%
posición:Puede reemplazar el segundo
100%
por algo máspx
oem
para ajustar la posición vertical del subrayado. También puede usarcalc
si desea agregar relleno vertical, por ejemplo:Por supuesto, también puede hacer su propio patrón base64 png con otro color, altura y diseño, por ejemplo, aquí: http://www.patternify.com/ - solo configure el ancho y la altura cuadrados en 2x1.
Fuente de inspiración: http://alistapart.com/article/customunderlines
fuente
Si está utilizando
text-decoration: underline;
, puede agregar espacio entre subrayado y texto utilizandotext-underline-position: under;
Para obtener más información sobre las propiedades de posición de texto subrayado, puede mirar aquí
fuente
Pude hacerlo usando la U (etiqueta de subrayado)
fuente
Esto es lo que uso:
html:
css:
fuente
Lo que uso:
fuente