Наше путешествие в мир теней продолжается. Если вы пропустили статью , мы изучили основы использования свойства box-shadow . Сегодня мы собираемся сосредоточиться на тексте-тени .
Напомню, что оба свойства определены в разных модулях и работают одинаково. Так что, если вы уже знакомы с box-shadow, вы легко поймете основы искусства text-shadows. Прежде чем мы перейдем к практике, давайте немного углубимся в теорию, чтобы выяснить, в чем разница между ними.
Поддержка браузера
Правило text-shadow поддерживается многими современными браузерами, включая IE10 . Вы также можете использовать его в своих приложениях в стиле metro для Windows 8 .
тень текста против коробки тени
Первое, что вам нужно знать, это то, что обе спецификации (CSS3 Backgrounds and Borders и CSS3 Text) на данный момент находятся в состоянии Working Draft и, следовательно, они все еще могут измениться. Я также буду обсуждать это, говоря о расстоянии распространения.
Если вы помните синтаксис box-shadow, он выглядит так:
box-shadow: none | <shadow> [ , <shadow> ]*; <shadow> = inset? && [ <length>{2,4} && <color>? ]
Второе правило в полном режиме можно расширить как:
shadow = inset? h-offset v-offset blur-radius spread-distance color;
Спецификация для CSS3 Text описывает свойство text-shadow аналогичным образом:
text-shadow: none | [ <length>{2,3} && <color>? ]#
Куда:
Значения интерпретируются как «box-shadow».
Таким образом, вы можете думать о полном синтаксисе для одного эффекта тени текста как:
shadow = h-offset v-offset blur-radius color;
Здесь есть два отличия: во-первых, вы не можете создать внутреннюю тень для текста, и во-вторых, в CSS3 Text нет расстояния для текста-тени. По аналогии с box-shadow вы можете создавать несколько теней, отображаемых друг над другом. Теперь давайте немного потренируемся.
текст-тень
Смещения и цвет
Мы начнем с самых первых шагов — чтобы определить некоторые горизонтальные и вертикальные смещения, все, что вам нужно, это записать два значения длины (1.1–1.4):
Положительные смещения перемещают тень вправо и вниз (1.1):
text-shadow:10px 10px; width:300px;
Отрицательные значения определяют смещение, сдвинутое влево и вверх (1.2):
text-shadow:-5px -5px; width:300px; color:blue;
Далее идет цвет. Давайте сначала обсудим, что происходит, когда цвет опущен.
Согласно текущей версии спецификации:
«Если цвет отсутствует, используемый цвет берется из свойства« color ».»
Если вы посмотрите на разные браузеры, вы можете заметить, что их поведение отличается. Браузеры на основе Webkit в этом случае используют прозрачный цвет — и не потому, что они плохие или делают что-то не так. Дело в том, что предыдущая версия css3-Background гласила:
пропущенные цвета — это выбранный UA цвет.
Я верю, что это будет исправлено в будущих версиях Chrome, Safari и других webkit-браузеров.
Пропуск цвета тени текста и, следовательно, применение к нему того же цвета, что и текст, может быть полезным, если вы хотите создать эффект размытого текста (см. Примеры 2.3 и 2.4 ниже).
Чтобы явно установить цвет тени, просто добавьте нужный цвет в конце правила:
text-shadow:-1px -1px white; color:blue; background:#333; /* 1.3 */ text-shadow:1px 1px rgba(255,255,255, 0.5); color:blue; background:#eee; /* 1.4 */
Обратите внимание, что при работе с тенями вы можете использовать любой цветовой формат, определенный в модуле Color CSS3, включая функции rgba () и hsla () с альфа-каналом.
нечеткость
Третий параметр длины предназначен для радиуса размытия (2.1–2.4):
В соответствии с определением радиуса размытия для свойства box-shadow следует использовать неотрицательное значение (0 — для размытия не требуется). Точный алгоритм размытия может отличаться в разных браузерах, но в математическом смысле все они должны быть достаточно близки к алгоритму размытия по Гауссу.
В первых двух примерах (2.1 — 2.2) я использую разные радиусы размытия:
text-shadow:5px 5px 3px darkred; color:red; /* 2.1 */ text-shadow:4px -4px 10px red; color:azure; background:#333; /* 2.2 */
Во второй паре (2.3 — 2.4) я изменяю только цвет текста и фона, и оба эффекта тени применяются с использованием одного и того же CSS-класса blurred-shadow :
.blurred-shadow { text-shadow:0px 0px 4px ; /* the color is absent*/ } color:red; /* 2.3 */ color:lightgray; background:#333; /* 2.4 */
Расширение и сокращение
Теперь пришло время поговорить еще немного о веб-стандартах. Я считаю, что вы должны это знать, прежде чем пытаться использовать значение распространения в текстовой тени в любом из ваших проектов. Во время работы над модулем CSS3 Text CSSWG решила внести изменения в предыдущую версию этой спецификации, чтобы ускорить продвижение к статусу рекомендации. В этом предыдущем выпуске свойство text-shadow включало еще один (четвертый) параметр длины — расстояние разбрасывания.
Аналогично box-shadow, распространение-расстояние для текста-тени позволяет расширить или сжать тень.
На данный момент это определение текста-тени было перенесено на L4 — и сегодня вы можете найти его в ED для css4-текста . Теперь я собираюсь обсудить, как использовать распространение, вы можете попробовать его в последних версиях IE10 (как я знаю в настоящий момент, IE — единственный браузер, поддерживающий распространение для текстовых теней). Spread — действительно мощный инструмент, позволяющий создавать удивительные образцы! Но это также может измениться в будущем. Так что будьте осторожны!
Чтобы увеличить тень, установите положительное значение разбрасывания (3.1):
text-shadow:5px 5px 0px 3px lightgreen; color:green;
Уменьшить — до отрицательного (3.2):
text-shadow:8px 8px 2px -3px darkgreen; color:green; font-weight:900;
В случае нулевого разброса расстояние может использоваться для выделения текста (3.3):
text-shadow:0 0 0 3px rgba(128, 255, 0, 0.75); color:green; background:#333;
И еще одно важное замечание! На самом деле сегодня четвертая длина в правиле тени текста трактуется не как поддержка браузеров как неправильное определение тени текста, и такие правила просто игнорируются. Поэтому, если вы хотите обеспечить какой-то уровень совместимости для них, вам нужно будет удвоить свои правила для текстовых теней:
text-shadow: 0px 0px 10px lightgreen; /* 3.4 */ text-shadow: 0px 0px 10px 10px lightgreen; /* 3.5 */
Иногда расширение тени можно эмулировать, используя несколько теней со смещением в различных направлениях (см. Примеры 4.6 и 4.7 в следующей главе).
Множественная тень
Наконец, и абсолютно аналогично box-shadow, вы можете применить несколько теней к тексту (4.1–4.5):
Простое описание (4.1):
text-shadow: 0 0 0 3px white, 0 0 0 4px gray; color:magenta;
Различные размытые тени с различными смещениями (4.2):
text-shadow: 3px 3px 4px 2px rgba(255,255,255,0.35), 6px -6px 4px 2px rgba(255,255,255,0.25), -3px -3px 4px 6px rgba(255,0,255,0.15);
Неоновый эффект (4.3):
text-shadow: 0 0 0 3px white, 0 0 2px 6px magenta, 0 0 1px 9px white, 0 0 6px 12px magenta;
И еще один неоновый эффект (4.4)
text-shadow: 0 0 2px #fff, 0 0 4px 2px rgba(255,255,255,0.5), 0 0 6px 6px #f0f, 0 0 4px 7px #fff, 0 0 3px 15px #222, -4px 0 2px 9px #f0f, 4px 0 2px 9px #f0f, 0 -4px 2px 9px #f0f, 0 4px 2px 9px #f0f;
Подчеркивание текста (4.5):
text-shadow: 0 -3px 3px 15px white, 0 1px 2px 9px; color:magenta;
Эмуляция расширения
Как я уже сказал технически, вы можете использовать несколько теней, чтобы создать нечто похожее на настоящее расширение теней. Итак, для эмуляции образца (4.6):
text-shadow: 0px 0px 0px 4px magenta;
Вы можете попытаться определить несколько теней с разными смещениями в разных направлениях (4.7):
text-shadow: magenta 0px 2px, magenta 2px 0px, magenta -2px 0px, magenta 0px-2px, magenta -1.4px -1.4px, magenta 1.4px 1.4px, magenta 1.4px -1.4px, magenta -1.4px 1.4px;
На самом деле есть некоторая визуальная разница. Также вы должны понимать, что такая техника имеет ограниченное применение: она менее точна и также отрицательно влияет на производительность рендеринга страницы.
Больше образцов
Теперь, когда вы уже знаете все основы искусства текстовых теней, давайте попробуем создать что-то более сложное.
Классическая радуга (5.1):
text-shadow: 0 0 2px 3px yellow, 0 0 2px 6px orange, 0 0 2px 9px red, 0 0 2px 12px lime, 0 0 2px 15px blue, 0 0 2px 18px violet;
Двойная тень (5.2):
text-shadow: 0 0 2px 2px white, 2px 0 2px 5px #222, 3px 0 3px 6px #933, 5px 0 2px 14px #222, 6px 0 5px 16px #533;
Пламя-тень (5.3):
text-shadow: 0 0 2px #eee, 0 0 4px 2px #fff, 0 -2px 4px 2px #ff3, 2px -4px 6px 4px #fd3, -2px -6px 11px 6px #f80, 2px -8px 18px 8px #f20;
Традиционный эффект «письма-печати» (5.4):
text-shadow: 0px 2px 3px #555;
Также традиционный 3d-текст (5.5):
text-shadow: 0 0 1px #999, 1px 1px 1px #888, 2px 2px 1px #777, 3px 3px 1px #666, 4px 4px 1px #555, 5px 5px 1px #444;
Двойная тень для винтажного эффекта (5.6)
text-shadow: 2px 2px #fff, 3px 3px #666;
Прозрачный текст с сокращенной тенью (этот эффект также зависит от размера шрифта и шрифта) — пример (5.7)
Collapse | Copy Code text-shadow: 0 0 2px -3px rgba(196,255,0,0.3), 0 0 6px -5px #9c6; color:transparent;
Использование тени текста на псевдоклассе css :: first-letter (5.8)
.text { text-shadow:0 0 5px; } .text::first-letter { color:azure; text-shadow:0 0 5px, 0 0px 6px 3px blue, 0 -2px 6px 6px cyan, 0 -4px 9px 9px lightblue ; }
Интерактивный образец
Если вы хотите поиграть с тенями в интерактивном режиме, мои коллеги создали классную демонстрацию для конференции Build в сентябре прошлого года: « Практическое занятие: text-shadow ».
Запись
Свойства CSS, обсуждаемые в этой статье, определяются в текстовом модуле CSS3, который в данный момент находится в состоянии «Рабочий чертёж». Между тем, он кажется достаточно стабильным, но все еще может измениться в деталях.