No momento, estou brincando com CSS3 e tentando obter um efeito de texto como este (a sombra interna preta borrada):
Mas não consigo encontrar uma maneira de criar sombras de texto dentro do texto. Eu me pergunto se isso ainda é possível porque o elemento de sombra de caixa é capaz de renderizar a sombra interna assim:
box-shadow: inset 0px -5px 10px 0px rgba(0, 0, 0, 0.5);
Alguma ideia?
Respostas:
Aqui vai um pequeno truque que eu descobri usando o
:before
e:after
pseudo-elementos:O atributo title deve ser igual ao conteúdo. Demo: http://dabblet.com/gist/1609945
fonte
Você deve ser capaz de fazer isso usando a sombra de texto, erm algo assim:
aqui está um exemplo: http://jsfiddle.net/ekDNq/
fonte
Aqui está minha melhor tentativa:
O problema é como recortar a sombra que vaza nas bordas !!! Tentei no webkit usando background-clip: text, mas o webkit renderiza a sombra acima do fundo, então não funciona.
Fazendo uma máscara de texto com CSS?
Sem uma camada de máscara superior, é impossível fazer uma sombra interna verdadeira no texto.
Talvez alguém deva recomendar que o W3C adicione background-clip: reverse-text , que cortaria uma máscara através do fundo em vez de cortar o fundo para caber dentro do texto.
Faça isso ou renderize a sombra do texto como parte do fundo e recorte-a com background-clip: text.
Tentei posicionar absolutamente um elemento de texto idêntico acima dele, mas o problema é o background-clip: o texto corta o fundo para caber dentro do texto, mas precisamos do inverso disso.
Tentei usar o traço de texto: 20px branco; neste elemento e no acima dele, mas o traço de texto entra e sai.
Métodos Alternativos
Como atualmente não há como fazer uma máscara de texto invertido em CSS, você pode usar SVG ou Canvas e fazer uma imagem de substituição de texto com as três camadas para obter o efeito.
Como o SVG é um subconjunto do XML, o texto SVG ainda seria selecionável e pesquisável, e o efeito pode ser produzido com menos código do que o Canvas.
Seria mais difícil conseguir isso com o Canvas porque ele não tem um dom com camadas como o SVG.
Você pode produzir o SVG no lado do servidor ou como um método de substituição de texto javascript no navegador.
Leitura adicional:
SVG versus Canvas:
http://dev.opera.com/articles/view/svg-or-canvas-choosing-between-the-two/
Recorte e máscara com texto SVG:
http://www.w3.org/TR/SVG/text.html#TextElement
fonte
Explicação mais precisa do CSS na resposta de kendo451 .
Há outra maneira de obter uma ilusão de sombra interna sofisticada,
que explicarei em três etapas simples. Digamos que temos este HTML:
e este CSS:
Passo 1
Vamos começar tornando o texto transparente:
Passo 2
Agora, recortamos esse fundo para a forma do texto:
etapa 3
Agora, a mágica: vamos colocar um borrado
text-shadow
, que ficará na frente do fundo , dando assim a impressão de uma sombra interna!Veja o resultado final .
Desvantagens?
background-clip
não pode sertext
).fonte
text-shadow: 1px 1px 1px #000, 3px 3px 5px blue;
?Um exemplo elegante sem a necessidade de um wrapper posicionado ou conteúdo duplicado na marcação:
Também fica bem em fundos escuros:
AND ME LINK E ME2 LINK
fonte
Você pode fazer isso. Infelizmente não há como usar uma inserção na sombra do texto, mas você pode fingir com cor e posição. Retire o desfoque e organize a sombra no canto superior direito. Algo assim pode resolver o problema:
... mas você precisa ter muito, muito cuidado com as cores que usa, caso contrário, ficará estranho. É essencialmente uma ilusão de ótica, então não funcionará em todos os contextos. Ele também não fica bem em tamanhos de fonte menores, portanto, esteja ciente disso.
fonte
background-clip
como mostrado nesta resposta .Não há necessidade de múltiplas sombras ou algo sofisticado assim, você apenas tem que deslocar sua sombra no eixo y negativo.
Para texto escuro em um fundo claro:
Se você tiver um fundo escuro, pode simplesmente inverter a cor e a posição y:
Brinque com os valores rgba, a opacidade e o desfoque para obter o efeito certo. Dependerá muito da cor da fonte e do fundo que você tem, e quanto mais pesada a fonte, melhor.
fonte
Experimente esta pequena joia de variação:
Eu normalmente considero "não há resposta" como um desafio
fonte
Eu vi muitas das soluções propostas, mas nenhuma foi exatamente o que eu esperava.
Aqui está meu melhor hack nisso , onde a cor é transparente, o fundo e a sombra do texto superior são da mesma cor com opacidades variadas, simulando a máscara, e a segunda sombra do texto é uma versão mais escura e mais saturada da cor que você realmente deseja (muito fácil de fazer com HSLA).
(aliás, texto e estilo com base no OP de um thread duplicado )
fonte
Tive alguns casos em que precisei de sombras internas no texto, e o seguinte funcionou bem para mim:
Isso define a opacidade do texto para 80% e, em seguida, cria duas sombras:
Ressalvas
fonte
Aqui está um link explicando como fazer isso, deve ser o que você está procurando:
http://sixrevisions.com/css/how-to-create-inset-typography-with-css3/
fonte
Parece que está funcionando: http://tips4php.net/2010/08/nice-css-text-shadow-effects/
Ele está usando várias sombras para obter esse efeito, conforme explicado aqui: http://www.w3.org/Style/Examples/007/text-shadow#multiple
fonte
Parece que todo mundo tem uma resposta para essa. Gosto da solução do @Web_Designer. Mas não precisa ser tão complexo assim e você ainda pode obter a sombra interna embaçada que está procurando.
http://dabblet.com/gist/3877605
fonte
Este é facilmente o melhor exemplo que já vi. http://lab.simurai.com/carveme/
A fonte está em gitthub https://github.com/simurai/lab/tree/gh-pages/carveme
fonte
Com base na
:before
:after
técnica de web_designer, aqui está algo que se aproxima do seu visual:Primeiro, faça seu texto da cor da sombra interna (preto no caso do OP).
Agora, use uma classe: after psuedo para criar uma duplicata transparente do texto original, colocada diretamente sobre ele. Atribua uma sombra de texto normal a ele sem deslocamento. Atribua a cor do texto original à sombra e ajuste o alfa conforme necessário.
http://dabblet.com/gist/2499892
Você não obtém controle total sobre a propagação, etc. da sombra como no PS, mas para valores de desfoque menores é bastante aceitável. A sombra ultrapassa os limites do texto, portanto, se você estiver trabalhando em um ambiente com um fundo-primeiro plano de alto contraste, isso será óbvio. Para itens de menor contraste, especialmente aqueles com o mesmo matiz, não é muito perceptível. Por exemplo, eu fui capaz de fazer um texto gravado de aparência muito agradável em fundos de metal usando esta técnica.
fonte
Esta é uma ótima solução para TRUE inset text shadow usando a propriedade background-clip CSS3:
fonte
Aqui está o que eu vim depois de examinar algumas das ideias aqui. A ideia principal é que a cor do texto se misture com as duas sombras, e observe que isso está sendo usado em um fundo cinza (caso contrário, o branco não aparecerá bem).
fonte
Experimente este exemplo para sombra de texto inserido. Aqui está o HTML
e o CSS
Demo on Jsfiddle
fonte
para sombra da caixa:
você pode ver o texto online e a sombra da caixa: texto online e a sombra da caixa
para mais exemplos, você pode ir para este endereço: mais exemplos de código freeclup
fonte
Há uma maneira muito mais simples de conseguir isso
Voilà
fonte
Para texto de tamanho normal em botões pequenos
Descobri que as outras ideias nesta página perdem a eficácia quando usadas em pequenos botões com letras de texto pequenas. Essa resposta amplia a resposta de RobertPitt .
Aqui está o pequeno ajuste:
Exibir trecho de código
Nota:
Usei este site para refinar os tons de cores.
fonte
Estou usando deste site, também parece bom. Dê uma olhada nisso Sombra interna
fonte