Вот моя лучшая попытка:
.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>
Проблема в том, как обрезать тень, которая кровоточит по краям !!! Я попытался в webkit использовать background-clip: text, но webkit отображает тень над фоном, поэтому она не работает.
Создание текстовой маски с помощью CSS?
Без верхнего слоя маски невозможно создать истинную внутреннюю тень для текста.
Возможно, кто-то должен порекомендовать W3C добавить background-clip: reverse-text , который бы вырезал маску через фон вместо того, чтобы вырезать фон, чтобы поместиться внутри текста.
Либо так, либо визуализируем тень текста как часть фона, и обрезаем его с помощью background-clip: text.
Я пытался расположить абсолютно идентичный текстовый элемент над ним, но проблема в том, что background-clip: текст обрезает фон, чтобы поместиться внутри текста, но нам нужно обратное.
Я пытался использовать текстовый штрих: 20 пикселей белый; как на этом элементе, так и на том, что над ним, но текстовый штрих входит и выходит.
Альтернативные методы
Поскольку в CSS в настоящее время нет способа создать маску с перевернутым текстом, вы можете обратиться к SVG или Canvas и сделать текстовое изображение с тремя слоями, чтобы получить эффект.
Поскольку SVG является подмножеством XML, текст SVG по-прежнему будет доступен для выбора и поиска, и эффект может быть получен с меньшим количеством кода, чем Canvas.
Было бы сложнее добиться этого с Canvas, потому что у него нет домика со слоями, как у SVG.
Вы можете создать SVG либо на стороне сервера, либо в качестве метода замены текста JavaScript в браузере.
Дополнительная литература:
SVG против холста:
http://dev.opera.com/articles/view/svg-or-canvas-choosing-between-the-two/
Обрезка и маскировка с помощью SVG-текста:
http://www.w3.org/TR/SVG/text.html#TextElement