Мы изучали основы использования теней CSS3: box-shadow и text-shadow . Сегодня мы собираемся улучшить наши навыки и изучить, как создавать удивительные тени для текста.
Некоторые идеи для теней я обнаружил в различных уроках для Photoshop — меня интересовало, смогу ли я добиться подобных эффектов, используя только text-shadow
Internet Explorer и Windows 8
Чтобы самостоятельно попробовать все эти примеры и выразить свое творчество с помощью text-shadow
Internet Explorer 10 . Все упомянутые методы также будут работать с приложениями в стиле metro для Windows 8, созданными с использованием HTML и JavaScript. Пусть Тень будет с тобой!
Аркада Любовь
В нашем первом примере мы попытаемся нарисовать какой-нибудь классный тисненый текст. Начнем с простого текста цвета лайма:
цвет: hsl (80, 70%, 55%);
Далее, давайте добавим рельефный эффект, добавив несколько теней с смещением диагонали в один пиксель (обратите внимание, как определяется цвет тени по сравнению с цветом текста):
тень текста: -1px -1px 0 hsl (80, 70%, 35%), -2px -2px 1px hsl (80, 70%, 35%);
Теперь мы добавим несколько приятных деталей — светлую белую размытую тень вокруг текста и темную тень внизу с мягким переходом:
тень текста: 0 0 2px #fff, -1px -1px 0 hsl (80, 70%, 35%), -2px -2px 1px hsl (80, 70%, 35%), -2px -2px 2px hsl (80, 10%, 15%);
Далее давайте добавим подложку для нашего текста. Чтобы это произошло, нам нужно расширить нашу тень (здесь мы используем четвертый параметр правила text-shadow
текстовая тень:… -3px -3px 0,7px hsl (60, 10%, 65%), -4px -4px 0 7px hsl (60, 10%, 65%), -5px -5px 0 7px hsl (60, 10%, 65%), -6px -6px 0,7px hsl (60, 10%, 65%);
Наконец, чтобы разместить наш текст на фоне, давайте добавим темную размытую тень к нижней части подложки:
текстовая тень:… -7px -7px 4px 8px hsl (60, 10%, 40%), -8px -8px 6px 9px hsl (60, 10%, 55%);
Конечный результат
цвет: hsl (80, 70%, 55%); тень текста: 0 0 2px #fff, / * рельефный текст * / -1px -1px 0 hsl (80, 70%, 35%), -2px -2px 1px hsl (80, 70%, 35%), / * переход на подложку * / -2px -2px 2px hsl (80, 10%, 15%), / * подложка * / -2px -2px 0 7px hsl (60, 80%, 95%), -3px -3px 0,7px hsl (60, 10%, 65%), -4px -4px 0 7px hsl (60, 10%, 65%), -5px -5px 0 7px hsl (60, 10%, 65%), -6px -6px 0,7px hsl (60, 10%, 65%), / * тень для подложки * / -7px -7px 4px 8px hsl (60, 10%, 40%), -8px -8px 6px 9px hsl (60, 10%, 55%);
Цвет счастья
Во втором примере мы будем повторно использовать некоторые идеи из первого: мы собираемся построить несколько красочных подложек, составляя из них пирамиду. Начнем с очень простого розового текста:
цвет: hsl (330, 100%, 50%);
Прежде всего, давайте сделаем это тиснением. На этот раз наша тень смотрит вниз, и она действительно мала, поэтому я могу уменьшить количество применяемых правил, исключив промежуточные однопиксельные смещения, но в случае диагональной тени такой подход приведет к эффекту сглаживания. Я также добавлю немного размытия, чтобы смягчить переход к следующей подложке:
тень для текста: 0 2px 0 0px hsl (330, 100%, 25%), 0 3px 2px 0px hsla (330, 100%, 15%, 0,5);
Далее, давайте добавим еще одну расширенную подложку с другим значением оттенка (обратите внимание, что я изменяю только вертикальное смещение, оттенок и расстояние распространения):
тень для текста: 0 2px 0 0px hsl (330, 100%, 25%), 0 3px 2px 0px hsla (330, 100%, 15%, 0,5), 0 3px 0 3px hsl (350, 100%, 50%), 0 5px 0 3px hsl (350, 100%, 25%), 0 6px 2px 3px hsla (350, 100%, 15%, 0,5);
Теперь нам просто нужно повторить один и тот же трюк еще несколько раз, увеличив размер подложки и переместив оттенок в правильном направлении:
текстовая тень:… 0 6px 0 9px hsl (20, 100%, 50%), 0 8px 0 9px hsl (20, 100%, 25%), 0 9px 2px 9px hsla (20, 100%, 15%, 0,5), ... 0 15px 0 45px hsl (90, 100%, 50%), 0 17px 0 45px hsl (90, 100%, 25%), 0 17px 2px 45px hsla (90, 100%, 15%, 0,5);
Конечный результат
цвет: hsl (330, 100%, 50%); тень для текста: 0 2px 0 0px hsl (330, 100%, 25%), 0 3px 2px 0px hsla (330, 100%, 15%, 0,5), /* следующий */ 0 3px 0 3px hsl (350, 100%, 50%), 0 5px 0 3px hsl (350, 100%, 25%), 0 6px 2px 3px hsla (350, 100%, 15%, 0,5), /* следующий */ 0 6px 0 9px hsl (20, 100%, 50%), 0 8px 0 9px hsl (20, 100%, 25%), 0 9px 2px 9px hsla (20, 100%, 15%, 0,5), /* следующий */ 0 9px 0 18px hsl (50, 100%, 50%) 0 11px 0 18px hsl (50, 100%, 25%), 0 12px 2px 18px hsla (50, 100%, 15%, 0,5), /* следующий */ 0 12px 0 30px hsl (70, 100%, 50%), 0 14px 0 30px hsl (70, 100%, 25%), 0 15px 2px 30px hsla (70, 100%, 15%, 0,5), /* следующий */ 0 15px 0 45px hsl (90, 100%, 50%), 0 17px 0 45px hsl (90, 100%, 25%), 0 17px 2px 45px hsla (90, 100%, 15%, 0,5);
Шоколад
Третий пример, который я создал при экспериментировании с чередующимися тенями, начинается с простого коричневого текста:
цвет: hsl (20, 100%, 20%);
Первый шаг — реализовать классический текстовый эффект 3D:
тень текста: -1px 1px 0 0 hsl (20, 100%, 16%), -2px 2px 0 0 hsl (20, 100%, 16%), -3px 3px 0 0 hsl (20, 100%, 16%), -4px 4px 0 0 hsl (20, 100%, 16%), -5px 5px 0 0 hsl (20, 100%, 16%), -6px 6px 0 0 hsl (20, 100%, 16%);
Затем я решил затемнить свои тени, уменьшив яркость, и добавить некоторое пространство между тенями, увеличив диагональное смещение:
тень текста: -0px 0px 0 0 hsl (20, 100%, 16%), -2px 2px 0 0 hsl (20, 100%, 14%), -4px 4px 0 0 hsl (20, 100%, 12%), -6px 6px 0 0 hsl (20, 100%, 10%), -8px 8px 0 0 hsl (20, 100%, 8%), -10px 10px 0 0 hsl (20, 100%, 6%);
Следующим шагом является сокращение теней. Используя сжатие, вы можете уменьшить тень до нескольких частей оригинальных символов (это также зависит от шрифта, размера шрифта и других атрибутов). В результате вы получите эффект рваной тени. Кроме того, обратите внимание, что, поскольку диагональные смещения и расстояния распространения различаются для каждой тени, мы получаем эффект легкого скручивания:
тень текста: -0px 0px 0 0 hsl (20, 100%, 16%), -2px 2px 0 -1px hsl (20, 100%, 14%), -4px 4px 0 -2px hsl (20, 100%, 12%), -6px 6px 0 -3px hsl (20, 100%, 10%), -8px 0 -4px hsl (20, 100%, 8%), -10px 0 -5px hsl (20, 100%, 6%);
Давайте немного смягчим наши тени. Используя blur-radius и color, мы можем добавить несколько промежуточных линий:
тень текста: -0px 0px 1px 0 hsl (20, 100%, 16%), -2px 2px 2px -1px hsl (20, 100%, 14%), -4px 4px 2px -2px hsl (20, 100%, 12%), -6px 6px 3px -3px hsl (20, 100%, 10%), -8px 8px 2px -4px hsl (20, 100%, 8%), -10px 10px 2px -5px hsl (20, 100%, 6%);
Наконец, поиграв с этим образцом еще несколько минут, я достиг следующего результата:
Конечный результат
цвет: hsl (20, 100%, 20%); тень текста: 0 0 1px hsl (20, 100%, 18%), -1px 1px 0 hsl (20, 100%, 16%), -2px 2px 2px -1px hsl (20, 100%, 14%), -4px 4px 2px -2px hsl (20, 100%, 12%), -6px 6px 3px -3px hsl (20, 100%, 10%), -8px 8px 2px -4px hsl (20, 100%, 9%), -10px 10px 3px -5px hsl (20, 100%, 8%), -12px 12px -6px hsl (20, 100%, 7%), -14px 14px 2px -7px hsl (20, 100%, 6%), -15px 15px 2px -8px hsl (20, 100%, 5%), -15px 15px 0 -8px hsla (20, 50%, 10%, 0,25);
Крем для торта
В четвертом примере мы создаем кремовый текстовый эффект для некоторого торта. Вот текст:
цвет: hsl (35, 100%, 30%); фон: hsl (35, 60%, 80%);
Начнем с размытия. Я добавил две тени: первая (верхняя) имеет то же значение оттенка, что и текст, но с меньшей насыщенностью, а вторая (нижняя) более размытая, более светлая и полупрозрачная. Я также переместил значение оттенка нижней тени в сторону красного:
тень текста: 0 0 2px 1px hsl (35, 70%, 30%), 0 0 4px 4px hsla (30, 100%, 55%, 0,5);
Теперь давайте добавим немного кремового субстрата (значение оттенка смещено в сторону желтого, а яркость увеличена):
текстовая тень:… -1px 1px 2px 7px hsl (45, 60%, 95%);
На следующем шаге мы должны добавить объем к подложке: я добавил новую тень с диагональным смещением того же цвета, что и текст, но менее насыщенный. Обратите внимание, что эта тень менее расширена, чем подложка (4 пикселя против 7 пикселей):
текстовая тень:… -3px 3px 1px 4px hsl (35, 70%, 30%);
И последний шаг: размытие подложки, чтобы смягчить переход к фону:
текстовая тень:… -3px 3px 4px 8px hsla (30, 90%, 55%, 0,5);
Конечный результат
цвет: hsl (35, 100%, 30%); фон: hsl (35, 60%, 80%); тень текста: 0 0 2px 1px hsl (35, 70%, 30%), / * переход на подложку * / 0 0 4px 4px hsla (30, 100%, 55%, 0,5), / * подложка * / -1px 1px 2px 7px hsl (45, 60%, 95%), / * добавление громкости * / -3px 3px 1px 4px hsl (35, 70%, 30%), / * переход на фон * / -3px 3px 4px 8px hsla (30, 90%, 55%, 0,5);
пластик
Я играл с последним, думая: «Что я могу сделать поверх этого? В пятом примере я использую шрифт CabinSketch. Итак, вот что мы имеем — это просто текст без каких-либо специальных эффектов:
цвет: hsl (65, 60%, 20%); фон: hsl (65, 60%, 95%);
Прежде всего, я добавил размытие вокруг текста (обратите внимание, что тень светлее, чем текст, и в результате текст выглядит ярче и насыщеннее):
тень для текста: 0 0 3px 2px hsl (65, 60%, 75%);
Далее давайте добавим некоторые контуры с эффектом размытия (обратите внимание, что я использую расширения и уменьшенную яркость):
тень для текста: 0 0 3px 2px hsl (65, 60%, 75%), 0 0 1px 9px hsl (65, 60%, 20%);
Да, это выглядит слишком темным — я добавлю промежуточную тень, чтобы осветлить мой текст:
тень для текста: 0 0 3px 2px hsl (65, 60%, 75%), 0 0 1px 5px hsl (65, 60%, 95%), 0 0 1px 9px hsl (65, 60%, 20%);
Теперь самое интересное. На самом деле, я не нуждаюсь в полном изложении (подложка), просто некоторые кусочки Чтобы скрыть лишние детали, я нарисую несколько теней поверх подложки. Эти тени меньше по размеру, но имеют большие смещения по диагонали:
тень для текста: 0 0 3px 2px hsl (65, 60%, 75%), 0 0 1px 5px hsl (65, 60%, 95%), 6px 6px 4px 7px hsl (65, 60%, 95%), -4px -6px 4px 6px hsl (65, 60%, 95%), 0 0 1px 9px hsl (65, 60%, 20%);
Вы также можете попробовать смягчить некоторые детали.
Конечный результат
цвет: hsl (65, 60%, 20%); фон: hsl (65, 60%, 95%); тень для текста: 0 0 3px 2px hsl (65, 60%, 75%), / * легкая подложка * / 0 0 1px 5px hsl (65, 60%, 95%), / * размытие * / 0 0 4px 4px hsla (65, 100%, 30%, 0,4), / * резка субстрата кусочками * / 6px 6px 4px 7px hsl (65, 60%, 95%), -4px -6px 4px 6px hsl (65, 60%, 95%), / * темный контур * / 0 0 1px 9px hsl (65, 60%, 20%);
Картина
Следующие два примера предложат вам несколько способов использования прозрачности. Подумайте об этом: как бы вы использовали text-shadow
На самом деле, вы не можете использовать text-shadow
Все тени, которые вы применяете к тексту, объединяются в стек и рисуются одна поверх другой. Затем текст рисуется поверх всех из них. Поэтому вам нужно как-то заставить текст исчезнуть … и чтобы это произошло, вы можете просто сделать текст прозрачным!
цвет: прозрачный; фон: hsl (0, 75%, 45%);
Теперь путь свободен. Я собираюсь рисовать белым цветом (поэтому единственное, что действительно имеет значение, это 100% легкость). Чтобы нарисовать что-то внутри текста, просто уменьшите размер тени:
тени для текста: 3 пикселя, 3 пикселя, 1 пикселя, 8 пикселей в секунду (0, 60%, 100%, 0,75);
Давайте добавим еще несколько деталей, изменяя прозрачность, смещение и размер:
Текстовая тень: 3px 3px 1px -8px hsla (0, 60%, 100%, 0,75), -1px -1px 1px -4px hsla (0, 60%, 100%, 0,65), 1px 1px 1px -4px hsla (0, 60%, 100%, 0,65);
Чтобы усилить форму, вы можете добавить расширенную и размытую тень:
текстовая тень:… 0 0 1px 2px hsla (0, 60%, 100%, 0,65);
Вы можете добавить дополнительные детали, если хотите.
Конечный результат
цвет: прозрачный; фон: hsl (0, 75%, 45%); Текстовая тень: 3px 3px 1px -8px hsla (0, 60%, 100%, 0,75), -1px -1px 1px -4px hsla (0, 60%, 100%, 0,65), 1px 1px 1px -4px hsla (0, 60%, 100%, 0,65), /* фон */ 0 0 1px 2px hsla (0, 60%, 100%, 0,65), * дополнительные детали */ -3px -3px 1px 2px hsla (0, 60%, 100%, 0,25), 3px 3px 1px 2px hsla (0, 60%, 100%, 0,25);
Вверх вниз
И последний образец! Я собираюсь продолжить играть с прозрачностью. Я начну с белого текста (выбран только для того, чтобы сделать его видимым):
цвет: прозрачный;
Прежде всего, давайте добавим классический 3D-текстовый эффект (вы можете поиграть с прозрачностью здесь). Обратите внимание на увеличенное значение яркости в средней тени — я нашел, что это хороший способ подчеркнуть объем (попробуйте увеличить яркость, чтобы сделать его более заметным):
тень для текста: 1px -1px hsla (0, 0%, 30%, .6), 2px -2px hsla (0, 0%, 30%, 0,7), 3px -3px hsla (0, 0%, 32%, 0,8), 4px -4px hsla (0, 0%, 30%, .9), 5px -5px hsla (0, 0%, 30%, 1,0);
Теперь, чтобы добавить больше объема, я добавлю тень сверху, повторяя форму исходного текста:
Текстовая тень: 0px 0px hsla (0, 0%, 50%, .5), 1px -1px hsla (0, 0%, 30%, 0,6), ...
Наконец, аналогично нижней части, я добавлю верхние трехмерные тени, но с большей прозрачностью и большей яркостью (чтобы сделать эту часть более четкой, самая верхняя тень рисуется с меньшей прозрачностью):
Текстовая тень: -4px 4px hsla (0, 0%, 70%, .4), -3px 3px hsla (0, 0%, 60%, 0,2), -2px 2px hsla (0, 0%, 70%, .2), -1px 1px hsla (0, 0%, 70%, 0,2), ...
Конечный результат
цвет: прозрачный; Текстовая тень: -4px 4px hsla (0, 0%, 70%, .4), -3px 3px hsla (0, 0%, 60%, 0,2), -2px 2px hsla (0, 0%, 70%, .2), -1px 1px hsla (0, 0%, 70%, 0,2), 0px 0px hsla (0, 0%, 50%, .5), 1px -1px hsla (0, 0%, 30%, 0,6), 2px -2px hsla (0, 0%, 30%, 0,7), 3px -3px hsla (0, 0%, 32%, 0,8), 4px -4px hsla (0, 0%, 30%, .9), 5px -5px hsla (0, 0%, 30%, 1,0);
Заметка
Свойство text-shadow
текстовом модуле CSS3, который в данный момент находится в рабочем состоянии. Хотя он кажется достаточно стабильным, он все же может измениться в деталях.
Значение расстояния разбрасывания для текстовых теней в настоящее время определено в черновике редактора для CSS Text Level 4 ..