The box-shadow
CSS property is used to add shadow effects around an element's frame. You can specify multiple effects separated by commas if you wish to do so. A box shadow is described by X and Y offsets relative to the element, blur and spread radii, and color.
The box-shadow
property enables you to cast a drop shadow from the frame of almost any element. If a border-radius
is specified on the element with a box shadow, the box shadow takes on the same rounded corners. The z-ordering of multiple box shadows is the same as multiple text shadows (the first specified shadow is on top).
Box-shadow generator is an interactive tool allowing you to generate a box-shadow
.
Syntax
Specify a single box-shadow using:
- Two, three, or four
<length>
values.- If only two values are given, they are interpreted as
<offset-x><offset-y>
values. - If a third value is given, it is interpreted as a
<blur-radius>
. - If a fourth value is given, it is interpreted as a
<spread-radius>
.
- If only two values are given, they are interpreted as
- Optionally, the
inset
keyword. - Optionally, a
<color>
value.
To specify multiple shadows, provide a comma-separated list of shadows.
Values
inset
- If not specified (default), the shadow is assumed to be a drop shadow (as if the box were raised above the content).
The presence of theinset
keyword changes the shadow to one inside the frame (as if the content was depressed inside the box). Inset shadows are drawn inside the border (even transparent ones), above the background, but below content. <offset-x>
<offset-y>
- These are two
<length>
values to set the shadow offset.<offset-x>
specifies the horizontal distance. Negative values place the shadow to the left of the element.<offset-y>
specifies the vertical distance. Negative values place the shadow above the element. See<length>
for possible units.
If both values are0
, the shadow is placed behind the element (and may generate a blur effect if<blur-radius>
and/or<spread-radius>
is set). <blur-radius>
- This is a third
<length>
value. The larger this value, the bigger the blur, so the shadow becomes bigger and lighter. Negative values are not allowed. If not specified, it will be0
(the shadow's edge is sharp). The specification does not include an exact algorithm for how the blur radius should be calculated, however, it does elaborate as follows: -
…for a long, straight shadow edge, this should create a color transition the length of the blur distance that is perpendicular to and centered on the shadow’s edge, and that ranges from the full shadow color at the radius endpoint inside the shadow to fully transparent at the endpoint outside it.
<spread-radius>
- This is a fourth
<length>
value. Positive values will cause the shadow to expand and grow bigger, negative values will cause the shadow to shrink. If not specified, it will be0
(the shadow will be the same size as the element). <color>
- See
<color>
values for possible keywords and notations.
If not specified, the color used depends on the browser - it is usually the value of thecolor
property, but note that Safari currently paints a transparent shadow in this case.
Interpolation
Each shadow in the list (treating none
as a 0-length list) is interpolated via the color (as color) component, and x, y, blur, and (when appropriate) spread (as length) components. For each shadow, if both input shadows are or are not inset
, then the interpolated shadow must match the input shadows in that regard. If any pair of input shadows has one inset
and the other not inset
, the entire shadow list is uninterpolable. If the lists of shadows have different lengths, then the shorter list is padded at the end with shadows whose color is transparent
, all lengths are 0
, and whose inset
(or not) matches the longer list.
Formal syntax
none | <shadow>#where
<shadow> = inset? && <length>{2,4} && <color>?
where
<color> = <rgb()> | <rgba()> | <hsl()> | <hsla()> | <hex-color> | <named-color> | currentcolor | <deprecated-system-color>
where
<rgb()> = rgb( [ [ <percentage>{3} | <number>{3} ] [ / <alpha-value> ]? ] | [ [ <percentage>#{3} | <number>#{3} ] , <alpha-value>? ] )
<rgba()> = rgba( [ [ <percentage>{3} | <number>{3} ] [ / <alpha-value> ]? ] | [ [ <percentage>#{3} | <number>#{3} ] , <alpha-value>? ] )
<hsl()> = hsl( [ <hue> <percentage> <percentage> [ / <alpha-value> ]? ] | [ <hue>, <percentage>, <percentage>, <alpha-value>? ] )
<hsla()> = hsla( [ <hue> <percentage> <percentage> [ / <alpha-value> ]? ] | [ <hue>, <percentage>, <percentage>, <alpha-value>? ] )where
<alpha-value> = <number> | <percentage>
<hue> = <number> | <angle>
Examples
Specifications
Specification | Status | Comment |
---|---|---|
CSS Backgrounds and Borders Module Level 3 The definition of 'box-shadow' in that specification. |
Candidate Recommendation | Initial definition |
Initial value | none |
---|---|
Applies to | all elements. It also applies to ::first-letter . |
Inherited | no |
Media | visual |
Computed value | any length made absolute; any specified color computed; otherwise as specified |
Animation type | a shadow list |
Canonical order | the unique non-ambiguous order defined by the formal grammar |
Browser compatibility
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 101 1 -webkit- | Yes | 41 3.5 — 13 -moz- 49 -webkit- | 93 4 | 10.51 | 5.11 3 -webkit- |
Multiple shadows | 10 1 -webkit- | Yes | 4 3.5 — 13 -moz- | 93 | 10.5 | 5.1 3 -webkit- |
inset | 10 1 -webkit- | Yes | 4 3.5 — 13 -moz- | 93 | 10.5 | 5.1 5 -webkit- |
Spread radius | 10 1 -webkit- | Yes | 4 3.5 — 13 -moz- | 93 | 10.5 | 5.1 5 -webkit- |
Feature | Android webview | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic support | Yes -webkit- 1 | ? | Yes | ? | ? | Yes1 | 51 Yes -webkit- |
Multiple shadows | Yes -webkit- | ? | Yes | ? | ? | Yes | 5 Yes -webkit- |
inset | Yes -webkit- | ? | Yes | ? | ? | Yes | 5 Yes -webkit- |
Spread radius | Yes -webkit- | ? | Yes | ? | ? | Yes | 5 Yes -webkit- |
1. Shadows affect layout in this browser. For example, if you cast an outer shadow to a box with a width
of 100%
, then you'll see a scrollbar.
2. From version 44: this feature is behind the layout.css.prefixes.webkit
preference (needs to be set to true
). To change preferences in Firefox, visit about:config.
3. To use box-shadow
in Internet Explorer 9 or later, you must set border-collapse
to separate
.
4. Since version 5.5, Internet Explorer supports Microsoft's DropShadow and Shadow Filter. You can use this proprietary extension to cast a drop shadow (though the syntax and the effect are different from CSS3)
See also
- The
<color>
data type - Other color-related properties:
color
,background-color
,border-color
,outline-color
,text-decoration-color
,text-emphasis-color
,caret-color
, andcolumn-rule-color
- Applying color to HTML elements using CSS