Тень коробки - CSS-хитрости

Anonim

Используется для отбрасывания теней (часто называемых «падающими тенями», как в Photoshop) от элементов. Вот пример с максимально возможной поддержкой браузеров:

.shadow ( -webkit-box-shadow: 3px 3px 5px 6px #ccc; /* Safari 3-4, iOS 4.0.2 - 4.2, Android 2.3+ */ -moz-box-shadow: 3px 3px 5px 6px #ccc; /* Firefox 3.5 - 3.6 */ box-shadow: 3px 3px 5px 6px #ccc; /* Opera 10.5, IE 9, Firefox 4+, Chrome 6+, iOS 5 */ )

Это:

box-shadow: (horizontal offset) (vertical offset) (blur radius) (optional spread radius) (color);
  1. Горизонтальное смещение (обязательное) тени, положительное означает, что тень будет справа от поля, отрицательное смещение поместит тень слева от поля.
  2. Вертикальное смещение (обязательно) тени: отрицательное означает, что тень будет выше прямоугольника, положительное означает, что тень будет ниже поля.
  3. Радиус размытия (обязательно), если установлено значение 0, тень будет резкой, чем выше число, тем более размытым она будет и тем дальше будет расширяться тень. Например, тень с горизонтальным смещением 5 пикселей, которая также имеет радиус размытия 5 пикселей, будет составлять 10 пикселей общей тени.
  4. Радиус распространения (необязательно), положительные значения увеличивают размер тени, отрицательные значения уменьшают размер. По умолчанию - 0 (размер тени такой же, как у размытия).
  5. Цвет (обязательно) - принимает любое значение цвета, например, hex, named, rgba или hsla. Если значение цвета опущено, тени блоков отображаются в цвете переднего плана (текст color). Но имейте в виду, что старые браузеры WebKit (до Chrome 20 и Safari 6) игнорируют правило, когда цвет не указан.

Использование полупрозрачного цвета rgba(0, 0, 0, 0.4)является наиболее распространенным и приятным эффектом, поскольку он не полностью / непрозрачно закрывает то, что находится поверх, но позволяет тому, что находится внизу, немного просвечивать, как настоящая тень.

Пример

Внутренняя тень

.shadow ( -moz-box-shadow: inset 0 0 10px #000000; -webkit-box-shadow: inset 0 0 10px #000000; box-shadow: inset 0 0 10px #000000; )

Пример

Internet Explorer (8 и ниже) Box Shadow

Вам нужен дополнительный элемент, но он совместим с filter.

 Box-shadowed element 
.shadow1 ( margin: 40px; background-color: rgb(68,68,68); /* Needed for IEs */ -moz-box-shadow: 5px 5px 5px rgba(68, 68, 68, 0.6); -webkit-box-shadow: 5px 5px 5px rgba(68, 68, 68, 0.6); box-shadow: 5px 5px 5px rgba(68, 68, 68, 0.6); filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=3,MakeShadow=true,ShadowOpacity=0.30); -ms-filter: "progid:DXImageTransform.Microsoft.Blur(PixelRadius=3,MakeShadow=true,ShadowOpacity=0.30)"; zoom: 1; ) .shadow1 .content ( position: relative; /* This protects the inner element from being blurred */ padding: 100px; background-color: #DDD; )

Только с одной стороны

Используя отрицательный радиус распространения, вы можете сжать тень коробки и оттолкнуть ее только от одного края коробки.

.one-edge-shadow ( box-shadow: 0 8px 6px -6px black; )

Множественные границы и многое другое

Вы можете разделять тень блока запятыми сколько угодно раз. Например, здесь показаны две тени с разными позициями и разными цветами на одном элементе:

box-shadow: inset 5px 5px 10px #000000, inset -5px -5px 10px blue;

Пример показывает, как вы можете использовать это для создания нескольких границ:

Посмотрите на Pen Multiple box-shadow cool! Автор: Крис Койер (@chriscoyier) на CodePen.

Применяя тени к псевдоэлементам, которыми вы затем манипулируете, вы можете получить довольно причудливые трехмерные тени блока:

См. Pen CSS3 Box Shadows Effects от Халила Ибрагима Нуроглу (@haibnu) на CodePen.

Сверхгладкие тени с помощью нескольких значений, разделенных запятыми:

См. Pen
smooth box-shadow Криса Койера (@chriscoyier)
на CodePen.

Поддержка браузера

См. Фрагмент вверху страницы для получения подробной информации о покрытии префиксов поставщика. Это одно из тех свойств, при котором на данном этапе вполне разумно отказаться от префиксов.