From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/zh-cn/web/css/box-shadow/index.html | 183 ++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 files/zh-cn/web/css/box-shadow/index.html (limited to 'files/zh-cn/web/css/box-shadow/index.html') diff --git a/files/zh-cn/web/css/box-shadow/index.html b/files/zh-cn/web/css/box-shadow/index.html new file mode 100644 index 0000000000..dadc4abfd0 --- /dev/null +++ b/files/zh-cn/web/css/box-shadow/index.html @@ -0,0 +1,183 @@ +--- +title: box-shadow +slug: Web/CSS/box-shadow +tags: + - CSS + - CSS 属性 + - Reference + - shadow + - 参考 + - 样式 + - 阴影 +translation_of: Web/CSS/box-shadow +--- +

{{CSSRef}}

+ +

CSS box-shadow 属性用于在元素的框架上添加阴影效果。你可以在同一个元素上设置多个阴影效果,并用逗号将他们分隔开。该属性可设置的值包括阴影的X轴偏移量、Y轴偏移量、模糊半径、扩散半径和颜色。

+ +
{{EmbedInteractiveExample("pages/css/box-shadow.html")}}
+ + + +

你几乎可以在任何元素上使用box-shadow来添加阴影效果。如果元素同时设置了 {{ cssxref("border-radius") }}属性 ,那么阴影也会有圆角效果。多个阴影在z轴上的顺序和多个 text shadows 规则相同(第一个阴影在最上面)。

+ +

Box-shadow generator  是一个允许你生成 box-shadow 的交互式工具。

+ +

语法

+ +
/* 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 关键字会使得阴影落在盒子内部,这样看起来就像是内容被压低了。 此时阴影会在边框之内 (即使是透明边框)、背景之上、内容之下。
+
<offset-x> <offset-y>
+
这是头两个 {{cssxref("<length>")}} 值,用来设置阴影偏移量。x,y 是按照数学二维坐标系来计算的,只不过y垂直方向向下。  <offset-x> 设置水平偏移量,正值阴影则位于元素右边,负值阴影则位于元素左边。 <offset-y> 设置垂直偏移量,正值阴影则位于元素下方,负值阴影则位于元素上方。可用单位请查看 {{cssxref("<length>")}} 。
+
如果两者都是0,那么阴影位于元素后面。这时如果设置了<blur-radius><spread-radius> 则有模糊效果。需要考虑 inset 
+
<blur-radius>
+
这是第三个 {{cssxref("<length>")}} 值。值越大,模糊面积越大,阴影就越大越淡。 不能为负值。默认为0,此时阴影边缘锐利。本规范不包括如何计算模糊半径的精确算法,但是,它详细说明如下:
+
+ +
对于长而直的阴影边缘,它会创建一个过渡颜色用于模糊 以阴影边缘为中心、模糊半径为半径的局域,过渡颜色的范围在完整的阴影颜色到它最外面的终点的透明之间。 (译者注:对此有兴趣的可以了解下数字图像处理的模糊算法。)
+ +
+
<spread-radius>
+
这是第四个 {{cssxref("<length>")}} 值。取正值时,阴影扩大;取负值时,阴影收缩。默认为0,此时阴影与元素同样大。需要考虑 inset 
+
<color>
+
相关事项查看 {{cssxref("<color>")}} 。如果没有指定,则由浏览器决定——通常是{{cssxref("color")}}的值,不过目前Safari取透明。
+
+ +

合成

+ +

将none看做是长度为0的列表。

+ +

列表中的每个阴影通过color组件(作为颜色),以及 x,y,blur,(合适的时候)加上spread组件(作为长度)进行合成。对于每个阴影,如果两个输入的阴影都是inset或者都不是inset,那么要添加的阴影必须考虑已存在的阴影。如果任何一对输入阴影中,一个是inset,另一个不是inset,那么整个阴影列表就是不可合成的。如果阴影列表有不同的长度,那么较短的列表会在尾部补上这类阴影:颜色透明,所有长度为0,inset还是非inset同较长的列表。

+ +

正规文法

+ +
{{csssyntax}}
+ + + +

例子

+ +

第一个例子中,包括了三种shadows,内置的阴影, 常规的下沉阴影, 和一个2个像素宽度的border式的阴影 (可以用 {{cssxref('outline')}} 来替代第三种)。

+ +
+

HTML

+ +
<blockquote><q>You may shoot me with your words,<br/>
+You may cut me with your eyes,<br/>
+You may kill me with your hatefulness,<br/>
+But still, like air, I'll rise.</q>
+<p>&mdash; Maya Angelou</p>
+</blockquote>
+ +

CSS

+ +
blockquote {
+  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);
+}
+
+ +

{{EmbedLiveSample('Examples1', '300', '300')}}

+ +
+

HTML

+ +
<div><p>Hello World</p></div>
+ +

CSS

+ +
p {
+  box-shadow: 0 0 0 2em #F4AAB9,
+              0 0 0 4em #66CCFF;
+  margin: 4em;
+  padding:1em;
+}
+
+ +

{{EmbedLiveSample('Examples2', '300', '300')}}

+ +

当 x-offset, y-offset, 和  blur 都是0, 盒阴影将是一个四边都是一样长度的带有颜色的outline. 当设置了多个阴影时,阴影绘制由最后一个开始, 故第一个设置的阴影将覆盖在后设置的阴影之上. 当border-radius设置为0时(也是其默认值), 阴影的四角将没有弧度. 当我们设置了border-radius为其他不为0的值时,阴影的四角也随之形成弧度。

+ +

我们通常在元素上增加一个大小为最大阴影宽度的margin值以保证阴影不会覆盖到相邻的元素或者覆盖到元素的border上. box-shadow属性不会影响到盒模型的构成。

+ +

规范

+ + + + + + + + + + + + + + + + +
规范状态
{{ SpecName('CSS3 Backgrounds', '#box-shadow', 'box-shadow') }}{{ Spec2('CSS3 Backgrounds') }}初次定义
+ +

{{cssinfo}}

+ +

浏览器兼容性

+ + + +

{{Compat("css.properties.box-shadow")}}

+ +

参见

+ + -- cgit v1.2.3-54-g00ecf