box-shadowBaseline Widely availableThis feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Learn moreSee full compatibilityReport feedbackCSS box-shadow 属性用于在元素的框架上添加阴影效果。你可以在同一个元素上设置多个阴影效果,并用逗号将他们分隔开。该属性可设置的值包括阴影的 X 轴偏移量、Y 轴偏移量、模糊半径、扩散半径和颜色。
尝试一下
box-shadow: 10px 5px 5px red;
box-shadow: 60px -16px teal;
box-shadow: 12px 12px 2px 1px rgba(0, 0, 255, 0.2);
box-shadow: inset 5em 1em gold;
box-shadow:
3px 3px red,
-1em 0 0.4em olive;
This is a box with a box-shadow around it.
#example-element {
margin: 20px auto;
padding: 0;
border: 2px solid #333;
width: 80%;
text-align: center;
}
你几乎可以在任何元素上使用box-shadow来添加阴影效果。如果元素同时设置了 border-radius属性,那么阴影也会有圆角效果。多个阴影在 z 轴上的顺序和多个 text shadows 规则相同 (第一个阴影在最上面)。
Box-shadow generator 是一个允许你生成 box-shadow 的交互式工具。
语法css/* x 偏移量 | y 偏移量 | 阴影颜色 */
box-shadow: 60px -16px teal;
/* x 偏移量 | y 偏移量 | 阴影模糊半径 | 阴影颜色 */
box-shadow: 10px 5px 5px black;
/* x 偏移量 | y 偏移量 | 阴影模糊半径 | 阴影扩散半径 | 阴影颜色 */
box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);
/* 插页 (阴影向内) | x 偏移量 | y 偏移量 | 阴影颜色 */
box-shadow: inset 5em 1em gold;
/* 任意数量的阴影,以逗号分隔 */
box-shadow:
3px 3px red,
-1em 0 0.4em olive;
/* 全局关键字 */
box-shadow: inherit;
box-shadow: initial;
box-shadow: unset;
向元素添加单个 box-shadow 效果时使用以下规则:
当给出两个、三个或四个
如果只给出两个值,那么这两个值将会被当作
如果给出了第三个值,那么第三个值将会被当作
如果给出了第四个值,那么第四个值将会被当作
可选,inset关键字。
可选,
若要对同一个元素添加多个阴影效果,请使用逗号将每个阴影规则分隔开。
取值
inset
如果没有指定inset,默认阴影在边框外,即阴影向外扩散。
使用 inset 关键字会使得阴影落在盒子内部,这样看起来就像是内容被压低了。此时阴影会在边框之内 (即使是透明边框)、背景之上、内容之下。
这是头两个
如果两者都是 0,那么阴影位于元素后面。这时如果设置了
这是第三个
对于长而直的阴影边缘,它会创建一个过渡颜色用于模糊 以阴影边缘为中心、模糊半径为半径的局域,过渡颜色的范围在完整的阴影颜色到它最外面的终点的透明之间。 (译者注:对此有兴趣的可以了解下数字图像处理的模糊算法。)
这是第四个
相关事项查看
合成将 none 看做是长度为 0 的列表。
列表中的每个阴影通过color组件(作为颜色),以及 x,y,blur,(合适的时候)加上 spread 组件(作为长度)进行合成。对于每个阴影,如果两个输入的阴影都是 inset 或者都不是 inset,那么要添加的阴影必须考虑已存在的阴影。如果任何一对输入阴影中,一个是 inset,另一个不是 inset,那么整个阴影列表就是不可合成的。如果阴影列表有不同的长度,那么较短的列表会在尾部补上这类阴影:颜色透明,所有长度为 0,inset 还是非 inset 同较长的列表。
正规文法box-shadow =
Sources: CSS Borders and Box Decorations Module Level 4例子设置三种阴影第一个例子中,包括了三种 shadow,内置的阴影,常规的下沉阴影,和一个 2 个像素宽度的 border 式的阴影 (可以用 outline 来替代第三种)。
HTML
html
>You may shoot me with your words,
You may cut me with your eyes,
You may kill me with your hatefulness,
But still, like air, I'll rise.
>
— Maya Angelou
CSS
cssblockquote {
padding: 20px;
box-shadow:
inset 0 -3em 3em rgba(0, 0, 0, 0.1),
0 0 0 2px rgb(255, 255, 255),
0.3em 0.3em 1em rgba(0, 0, 0, 0.3);
}
设置偏移量和 blur 为零HTML
html
Hello World
CSS
cssp {
box-shadow:
0 0 0 2em #f4aab9,
0 0 0 4em #66ccff;
margin: 4em;
padding: 1em;
}
当 x-offset、y-offset 和 blur 都是 0,盒阴影将是一个四边都是一样长度的带有颜色的outline。当设置了多个阴影时,阴影绘制由最后一个开始,故第一个设置的阴影将覆盖在后设置的阴影之上。当 border-radius 设置为 0 时(也是其默认值),阴影的四角将没有弧度。当我们设置了 border-radius 为其他不为 0 的值时,阴影的四角也随之形成弧度。
我们通常在元素上增加一个大小为最大阴影宽度的margin值以保证阴影不会覆盖到相邻的元素或者覆盖到元素的border上。box-shadow属性不会影响到盒模型的构成。
规范SpecificationCSS Backgrounds and Borders Module Level 3 # box-shadow初始值none适用元素所有元素. It also applies to ::first-letter.是否是继承属性否计算值any length made absolute; any specified color computed; otherwise as specified动画类型a shadow list浏览器兼容性参见
其他与 color 相关的属性:color, background-color, border-color, outline-color, text-decoration-color, text-emphasis-color, caret-color, and column-rule-color
使用 CSS 给 HTML 元素添加颜色