Hier ist mein bester Versuch:
.inner_shadow {
color:transparent;
background-color:white;
text-shadow: 0 0 20px rgba(198,28,39,0.8), 0 0 0 black;
font-family:'ProclamateHeavy'; // Or whatever floats your boat
font-size:150px;
}
<span class="inner_shadow">Inner Shadow</span>
Das Problem ist, wie man den Schatten schneidet, der an den Rändern blutet !!! Ich habe es im Webkit mit background-clip: text versucht, aber das Webkit rendert den Schatten über dem Hintergrund, sodass es nicht funktioniert.
Erstellen einer Textmaske mit CSS?
Ohne eine obere Maskenebene ist es unmöglich, einen echten inneren Schatten auf Text zu erzeugen.
Vielleicht sollte jemand dem W3C empfehlen, einen Hintergrundclip hinzuzufügen : umgekehrten Text , der eine Maske durch den Hintergrund schneidet, anstatt den Hintergrund so zu schneiden, dass er in den Text passt.
Entweder das oder den Textschatten als Teil des Hintergrunds rendern und mit Hintergrund-Clip: Text ausschneiden.
Ich habe versucht, ein identisches Textelement absolut darüber zu positionieren, aber das Problem ist der Hintergrundclip: Text schneidet den Hintergrund so ab, dass er in den Text passt, aber wir brauchen das Gegenteil davon.
Ich habe versucht, einen Strich zu verwenden: 20px weiß; sowohl auf diesem als auch auf dem darüber liegenden Element, aber der Textstrich geht sowohl rein als auch raus.
Alternative Methoden
Da es derzeit keine Möglichkeit gibt, eine invertierte Textmaske in CSS zu erstellen, können Sie sich an SVG oder Canvas wenden und ein Textersatzbild mit den drei Ebenen erstellen, um den Effekt zu erzielen.
Da SVG eine Teilmenge von XML ist, kann SVG-Text weiterhin ausgewählt und durchsucht werden, und der Effekt kann mit weniger Code als Canvas erzeugt werden.
Es wäre schwieriger, dies mit Canvas zu erreichen, da es keinen Dom mit Ebenen wie SVG gibt.
Sie können die SVG entweder serverseitig oder als Javascript-Textersetzungsmethode im Browser erstellen.
Weiterführende Literatur:
SVG versus Canvas:
http://dev.opera.com/articles/view/svg-or-canvas-choosing-between-the-two/
Ausschneiden und Maskieren mit SVG-Text:
http://www.w3.org/TR/SVG/text.html#TextElement