Actualmente estoy jugando con CSS3 y tratando de lograr un efecto de texto como este (la sombra interior borrosa negra):
Pero no puedo encontrar una forma de crear sombras de texto dentro del texto. Me pregunto si todavía es posible porque el elemento box-shadow puede representar la sombra en el interior de esta manera:
box-shadow: inset 0px -5px 10px 0px rgba(0, 0, 0, 0.5);
¿Algunas ideas?
Respuestas:
Aquí hay un pequeño truco que descubrí con el
:before
y:after
pseudo-elementos:El atributo de título debe ser el mismo que el contenido. Demostración: http://dabblet.com/gist/1609945
fuente
Debería poder hacerlo usando la sombra de texto, erm, algo como esto:
aquí hay un ejemplo: http://jsfiddle.net/ekDNq/
fuente
Este es mi mejor intento:
¡El problema es cómo recortar la sombra que sangra alrededor de los bordes! Probé en webkit usando background-clip: text, pero webkit muestra la sombra sobre el fondo para que no funcione.
¿Hacer una máscara de texto con CSS?
Sin una capa de máscara superior es imposible hacer una verdadera sombra interior en el texto.
Quizás alguien debería recomendar que el W3C agregue background-clip: reverse-text , que cortaría una máscara a través del fondo en lugar de cortar el fondo para que quepa dentro del texto.
O eso o renderiza la sombra de texto como parte del fondo y recórtala con background-clip: text.
Intenté colocar absolutamente un elemento de texto idéntico encima de él, pero el problema es clip de fondo: el texto recorta el fondo para que quepa dentro del texto, pero necesitamos lo contrario.
Intenté usar el trazo de texto: 20px blanco; tanto en este elemento como en el que está encima, pero el trazo del texto entra y sale.
Métodos alternativos
Dado que actualmente no hay forma de crear una máscara de texto invertido en CSS, puede recurrir a SVG o Canvas y hacer una imagen de reemplazo de texto con las tres capas para obtener su efecto.
Dado que SVG es un subconjunto de XML, el texto SVG aún se podría seleccionar y buscar, y el efecto se puede producir con menos código que Canvas.
Sería más difícil lograr esto con Canvas porque no tiene un dom con capas como lo hace SVG.
Puede producir el SVG en el lado del servidor o como un método de reemplazo de texto de JavaScript en el navegador.
Otras lecturas:
SVG versus lienzo:
http://dev.opera.com/articles/view/svg-or-canvas-choosing-between-the-two/
Recorte y enmascaramiento con texto SVG:
http://www.w3.org/TR/SVG/text.html#TextElement
fuente
Explicación más precisa del CSS en la respuesta de kendo451 .
Hay otra forma de obtener una ilusión de sombra interior fantasiosa,
que explicaré en tres simples pasos. Digamos que tenemos este HTML:
y este CSS:
Paso 1
Comencemos por hacer que el texto sea transparente:
Paso 2
Ahora, recortamos ese fondo a la forma del texto:
Paso 3
Ahora, la magia: pondremos un difuminado
text-shadow
, que quedará delante del fondo , dando así la impresión de una sombra interior!Vea el resultado final .
¿Desventajas?
background-clip
no puede sertext
).fuente
text-shadow: 1px 1px 1px #000, 3px 3px 5px blue;
?Un ejemplo elegante sin la necesidad de un contenedor posicionado o contenido duplicado en el marcado:
También se ve bien en fondos oscuros:
Y YO LINK Y ME2 LINK
fuente
Puedes hacer esto. Desafortunadamente, no hay forma de usar un recuadro en la sombra de texto, pero puede simularlo con color y posición. Tome el desenfoque hacia abajo y coloque la sombra en la parte superior derecha. Algo como esto podría funcionar:
... pero deberás tener mucho, mucho cuidado con los colores que usas, de lo contrario se verá mal. Es esencialmente una ilusión óptica, por lo que no funcionará en todos los contextos. Tampoco se ve muy bien en tamaños de fuente más pequeños, así que tenlo en cuenta también.
fuente
background-clip
como se muestra en esta respuesta .No hay necesidad de sombras múltiples ni nada elegante, solo tienes que compensar tu sombra en el eje y negativo.
Para texto oscuro sobre un fondo claro:
Si tiene un fondo oscuro, simplemente puede invertir el color y la posición y:
Juega con los valores rgba, la opacidad y el desenfoque para obtener el efecto perfecto. Dependerá mucho del color de fuente y fondo que tengas, y cuanto más pesada sea la fuente, mejor.
fuente
Prueba esta pequeña joya de variación:
Normalmente tomo "no hay respuesta" como un desafío
fuente
He visto muchas de las soluciones propuestas, pero ninguna fue lo que esperaba.
Aquí está mi mejor truco en esto , donde el color es transparente, el fondo y la sombra de texto superior son del mismo color con opacidades variables, simulando la máscara, y la segunda sombra de texto es una versión más oscura y saturada del color que usted realmente quiero (bastante fácil de hacer con HSLA).
(por cierto, el texto y el estilo se basan en el OP de un hilo dupe )
fuente
He tenido algunos casos en los que necesitaba sombras internas en el texto, y lo siguiente me ha funcionado bien:
Esto establece la opacidad del texto al 80% y luego crea dos sombras:
Advertencias
fuente
Aquí hay un enlace que habla sobre cómo hacer esto, debería ser lo que está buscando:
http://sixrevisions.com/css/how-to-create-inset-typography-with-css3/
fuente
Parece que está funcionando: http://tips4php.net/2010/08/nice-css-text-shadow-effects/
Está usando varias sombras para lograr ese efecto como se explica aquí: http://www.w3.org/Style/Examples/007/text-shadow#multiple
fuente
Parece que todo el mundo tiene una respuesta a esta. Me gusta la solución de @Web_Designer. Pero no tiene por qué ser tan complejo como eso y aún puede obtener la sombra interior borrosa que está buscando.
http://dabblet.com/gist/3877605
fuente
Este es fácilmente el mejor ejemplo que he visto. http://lab.simurai.com/carveme/
La fuente está en gitthub https://github.com/simurai/lab/tree/gh-pages/carveme
fuente
Sobre la base de la
:before
:after
técnica de web_designer, aquí hay algo que se acerca más a su aspecto:Primero, haga que su texto sea del color de la sombra interior (negro en el caso del OP).
Ahora, use una clase: after psuedo para crear un duplicado transparente del texto original, colocado directamente encima de él. Asígnele una sombra de texto normal sin desplazamiento. Asigne el color del texto original a la sombra y ajuste el alfa según sea necesario.
http://dabblet.com/gist/2499892
No obtiene un control completo sobre la propagación, etc. de la sombra como lo hace en PS, pero para valores de desenfoque más pequeños es bastante aceptable. La sombra sobrepasa los límites del texto, por lo que si está trabajando en un entorno con un fondo-primer plano de alto contraste, será obvio. Para los elementos de menor contraste, especialmente los que tienen el mismo tono, no se nota demasiado. Por ejemplo, he podido hacer un texto grabado al aguafuerte de muy buen aspecto en fondos de metal utilizando esta técnica.
fuente
Aquí hay una gran solución para la sombra de texto insertada TRUE usando la propiedad CSS3 de clip de fondo:
fuente
Esto es lo que se me ocurrió después de ver algunas de las ideas aquí. La idea principal es que el color del texto se mezcle con ambas sombras y tenga en cuenta que se está utilizando sobre un fondo gris (de lo contrario, el blanco no se verá bien).
fuente
Pruebe este ejemplo para la sombra del texto insertado. Aquí está el HTML
y el CSS
Demo on Jsfiddle
fuente
para sombra de caja:
puede ver texto en línea y sombra de cuadro: texto en línea y sombra de cuadro
para más ejemplos puedes ir a esta dirección: más código de ejemplo freeclup
fuente
Hay una forma mucho más sencilla de lograr esto
Voilà
fuente
Para texto de tamaño normal en botones pequeños
Encontré que las otras ideas en esta página pierden su eficacia cuando se usan en botones pequeños con letras de texto pequeñas. Esta respuesta amplía la respuesta de RobertPitt .
Aquí está el pequeño ajuste:
Mostrar fragmento de código
Nota:
Usé este sitio para refinar los tonos de color.
fuente
Lo estoy usando desde este sitio, también se ve bien. Échale un vistazo Sombra interior
fuente