Тени¶
Существует несколько способов добавления теней к тексту и элементам в CSS. В этом модуле вы узнаете, как использовать каждый из этих способов и для каких задач они предназначены.
CSS подкаст
017: Тени
Допустим, вам прислали проект, который нужно создать, и в этом проекте есть изображение футболки, вырезанное, с падающей тенью. Дизайнер говорит вам, что изображение продукта является динамическим и может обновляться через систему управления контентом, поэтому и падающая тень должна быть динамической. Вместо футболки изображение может быть козырьком, шортами или любым другим предметом. Как это сделать с помощью CSS?
В CSS есть свойства box-shadow и text-shadow, но картинка — это не текст, поэтому использовать text-shadow нельзя. Если использовать box-shadow, то тень будет лежать на окружающем блоке, а не на футболке.
К счастью, есть и другой вариант: фильтр drop-shadow(). Он позволяет сделать именно то, о чем просил дизайнер. Существует множество вариантов использования теней в CSS, каждый из которых предназначен для разных случаев.
Тень блока¶
Свойство box-shadow предназначено для добавления тени к блоку HTML-элемента. Оно работает для блочных и инлайн-элементов.
1 2 3 | |
Порядок значений для box-shadow следующий:
- Горизонтальное смещение: положительное число сдвигает его влево, а отрицательное — вправо.
- Вертикальное смещение: положительное число сдвигает его сверху вниз, а отрицательное — снизу вверх.
- Радиус размытия: при большем значении тень будет более размытой, а при меньшем — более резкой.
- Радиус размытия (необязательно): большее число увеличивает размер тени, а меньшее — уменьшает, при этом радиус размытия будет равен радиусу размытия, если он установлен в
0. - Цвет: Любое допустимое значение цвета. Если он не задан, то будет использоваться вычисленный цвет текста.
Чтобы сделать тень блока внутренней, а не внешней по умолчанию, добавьте ключевое слово inset перед другими свойствами.
1 2 3 4 5 6 7 8 9 | |
Множественные тени¶
С помощью box-shadow можно добавить сколько угодно теней. Для этого добавьте коллекцию наборов значений, разделенных запятыми:
1 2 3 4 5 6 | |
Свойства, влияющие на тень блока¶
Добавление border-radius к блоку также повлияет на форму его тени. Это связано с тем, что CSS создает тень на основе формы блока, как будто на него направлен свет.
1 2 3 4 | |
Если блок с box-shadow находится в контейнере, имеющем overflow: hidden, то тень не выйдет за пределы этого переполнения.
1 2 3 4 5 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Тень текста¶
Свойство text-shadow очень похоже на свойство box-shadow. Только работает оно для текстовых узлов.
1 2 3 | |
Значения для text-shadow те же, что и для box-shadow, и расположены в том же порядке. Единственное отличие заключается в том, что text-shadow не имеет значения spread и ключевого слова inset.
Значения для text-shadow те же, что и для box-shadow, и расположены в том же порядке. Единственное отличие заключается в том, что text-shadow не имеет значения spread и ключевого слова inset.
1 2 3 4 | |
Множественные тени текста¶
С помощью text-shadow, как и с помощью box-shadow, можно добавлять сколько угодно теней. Добавьте коллекцию наборов значений, разделенных запятыми, и вы сможете создавать действительно интересные текстовые эффекты, например, 3D-текст.
1 2 3 4 | |
drop-shadow()¶
Чтобы получить падающую тень, повторяющую все возможные изгибы изображения, используйте фильтр CSS drop-shadow. Эта тень применяется к альфа-маске, что делает ее очень удобной для добавления тени к вырезанному изображению, как в случае, показанном во введении этого модуля.
1 2 3 | |
Мы рассмотрим CSS "фильтры" в другом модуле, но вкратце можно сказать, что фильтры позволяют применять различные графические эффекты к пикселям элемента.
Фильтр drop-shadow имеет те же значения, что и box-shadow, однако ключевое слово inset и значение spread не допускаются. Вы можете добавить столько теней, сколько захотите, добавив несколько экземпляров значений drop-shadow к свойству filter. Каждая тень будет использовать предыдущую тень в качестве опорной точки позиционирования.
Источник: Shadows