¿Hay alguna forma en CSS para dar contornos al texto con diferentes colores? Quiero resaltar algunas partes de mi texto para hacerlo más intuitivo, como los nombres, enlaces, etc. Cambiar los colores de los enlaces, etc., son comunes hoy en día, por lo que quiero algo nuevo.
329
Respuestas:
Hay una propiedad experimental de webkit llamada
text-stroke
en CSS3, he estado tratando de hacer que esto funcione por algún tiempo, pero hasta ahora no he tenido éxito.Lo que he hecho en su lugar es usar la
text-shadow
propiedad ya admitida (compatible con Chrome, Firefox, Opera e IE 9, creo).Use cuatro sombras para simular un texto con trazos:
He hecho una demostración para ti aquí
Y un ejemplo suspendido está disponible aquí
Como Jason C ha mencionado en los comentarios, la
text-shadow
propiedad CSS ahora es compatible con todos los principales navegadores, con la excepción de Opera Mini. Donde esta solución funcionará para la compatibilidad con versiones anteriores (no es realmente un problema con respecto a los navegadores que se actualizan automáticamente), creotext-stroke
que se debe usar el CSS.fuente
text-shadow
hasta IE10. Curiosamente, IE9 es compatiblebox-shadow
pero notext-shadow
.text-shadow
del navegador para . Parece que actualmente (3 años después de la publicación de esta respuesta) es compatible con todos los principales navegadores, con la excepción de Opera Mini, que muestra "soporte parcial" (ignorablur-radius
).text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
text-shadow
apoyo, notext-stroke
. Que solo es compatible con webkit en este momento.Editar:
text-stroke
ahora es bastante maduro e implementado en la mayoría de los navegadores . Es más fácil, más nítido y más preciso. Si la audiencia de su navegador puede admitirlo, ahora debe usarlotext-stroke
primero, en lugar detext-shadow
.Puede y debe hacer esto solo con el
text-shadow
efecto sin ninguna compensación:¿Por qué? Cuando compensas múltiples efectos de sombra, comenzarás a notar esquinas irregulares e irregulares:
tener efectos de sombra de texto en una sola posición elimina los desplazamientos, lo que significa que si sientes que es demasiado delgado y preferirías un contorno más oscuro, no hay problema. puede repetir el mismo efecto (manteniendo la misma posición y desenfoque), varias veces. Al igual que:
Aquí hay una muestra de un solo efecto (arriba), y el mismo efecto repetido 14 veces (abajo):
También tenga en cuenta: Debido a que las líneas se vuelven tan delgadas, es una muy buena idea desactivar el procesamiento de subpíxeles con
-webkit-font-smoothing: antialiased
.fuente
font-smoothing
opción, ¡mejoró enormemente la salida en cromo!text-stroke
no es lo mismo que esquema a través detext-shadow
.text-stroke
no tiene ninguna opción para hacer que el contorno aparezca fuera del texto, lo que significa que el contorno se desvanece en el texto, lo que a menudo se ve realmente horrible. En otras palabras,text-stroke
no es un reemplazotext-shadow
para los contornos¡Fácil! SVG al rescate.
Este es un método simplificado:
Aquí hay una demostración más compleja .
fuente
Puede intentar apilar varias sombras borrosas hasta que las sombras se vean como un trazo, así:
Aquí hay un violín: http://jsfiddle.net/GGUYY/
Lo menciono por si alguien está interesado, aunque no lo llamaría una solución porque falla de varias maneras:
fuente
Estaba buscando una solución de trazo de texto en el navegador que funciona cuando se superpone en imágenes de fondo. Creo que tengo una solución para esto que no implica un marcado adicional, js y funciona en IE7-9 (no he probado 6), y no causa problemas de alias.
Esta es una combinación del uso de CSS3 text-shadow, que tiene un buen soporte excepto IE ( http://caniuse.com/#search=text-shadow ), y luego usar una combinación de filtros para IE. El soporte de trazo de texto CSS3 es pobre en este momento.
Filtros IE
El filtro de brillo ( http://www.impressivewebs.com/css3-text-shadow-ie/ ) se ve terrible, así que no lo usé.
La respuesta de David Hewitt implicó agregar filtros de sombra en una combinación de direcciones. ClearType luego se elimina desafortunadamente, por lo que terminamos con texto mal alias.
Luego combiné algunos de los elementos sugeridos en useragentman con los filtros de sombra.
Poniendo todo junto
Este ejemplo sería texto negro con un trazo blanco. Estoy usando clases html condicionales por cierto para dirigirme a IE ( http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ ).
fuente
filter: glow(color=white,strength=1);
Solo agrego esta respuesta. "Acariciar" el texto no es lo mismo que "Esbozar"
Esbozar se ve muy bien. Acariciar se ve horrible.
La solución SVG que aparece en otra parte tiene el mismo problema. De que quieres un bosquejo , debe colocar el texto dos veces. Una vez acariciado y nuevamente no acariciado.
Acariciar NO ES ESQUEMA
PD: Me encantaría saber cómo hacer que el SVG tenga el tamaño correcto de cualquier texto arbitrario. Tengo la sensación de que es bastante complicado involucrar generar el svg, consultarlo con JavaScript para obtener la extensión y luego aplicar los resultados. Si hay una manera más fácil que no sea js, me encantaría saber.
fuente
Obtuve mejores resultados con 6 sombras diferentes:
fuente
fuente
Este mixin para SASS dará resultados suaves, utilizando 8 ejes:
Y CSS normal:
fuente
Trabajar con trazos más gruesos se vuelve un poco complicado, si tiene el placer de probar sass este mixin, no es perfecto y, dependiendo del peso del trazo, genera una buena cantidad de css.
fuente
Múltiples sombras de texto.
Algo así:
Demostración: http://jsfiddle.net/punosound/gv6zs58m/
fuente
Generador de sombras de texto
Hay muchas respuestas geniales aquí. Parece que la sombra de texto es probablemente la forma más confiable de hacer esto. No entraré en detalles acerca de cómo hacer esto con text-shadow ya que otros ya lo han hecho, pero la idea básica es crear múltiples sombras de texto alrededor del elemento de texto. Cuanto más grande sea el contorno del texto, más sombras de texto necesitará.
Todas las respuestas enviadas (a partir de esta publicación) proporcionan soluciones estáticas para la sombra de texto. He adoptado un enfoque diferente y he escrito este JSFiddle que acepta valores de color de contorno, desenfoque y ancho como entradas y genera la propiedad de sombra de texto adecuada para su elemento. Simplemente complete los espacios en blanco, verifique la vista previa y haga clic para copiar el CSS y pegarlo en su hoja de estilo.
Apéndice innecesario
Aparentemente, las respuestas que incluyen un enlace a un JSFiddle no se pueden publicar a menos que también contengan código. Puede ignorar por completo este apéndice si lo desea. Este es el JavaScript de mi violín que genera la propiedad de sombra de texto. Tenga en cuenta que no necesita implementar este código en sus propios trabajos:
fuente
También tuve este problema, y
text-shadow
no era una opción porque las esquinas se verían mal (a menos que tuviera muchas sombras), y no quería ningún desenfoque, por lo tanto, mi única otra opción era hacer lo siguiente: Tener 2 divs, y para el div de fondo, coloque un-webkit-text-stroke
sobre, que luego permita un contorno tan grande como desee.Usando esto, pude lograr una línea de salida , porque el
stroke-width
método no era una opción si desea que su texto permanezca legible con un contorno muy grande (porque constroke-width
el contorno comenzará dentro de las letras, lo que lo hace no legible cuando el ancho se hace más grande que las letras.Nota: la razón por la que necesitaba un esquema tan grueso era que estaba emulando las etiquetas de las calles en "google maps" y quería un gran halo blanco alrededor del texto. Esta solución funcionó perfectamente para mí.
Aquí hay un violín que muestra esta solución
fuente
Aquí está el archivo CSS, espero que obtengas lo que quieras
fuente