Pack Camo

CSS box-shadow 生成器

可调偏移、模糊、扩展和颜色的多层阴影,实时预览。

所有处理都在本地完成,不会上传任何内容。

CSS

box-shadow:
  0 1px 1px rgba(0, 0, 0, 0.075),
  0 2px 2px rgba(0, 0, 0, 0.075),
  0 4px 4px rgba(0, 0, 0, 0.075),
  0 8px 8px rgba(0, 0, 0, 0.075),
  0 16px 16px rgba(0, 0, 0, 0.075);

Tailwind 类

shadow-[0_1px_1px_rgba(0,0,0,0.075),0_2px_2px_rgba(0,0,0,0.075),0_4px_4px_rgba(0,0,0,0.075),0_8px_8px_rgba(0,0,0,0.075),0_16px_16px_rgba(0,0,0,0.075)]

图层

第一个图层绘制在最上方。

图层 1

0px
1px
1px
0px
8%

预览

背景

框的颜色

16px
180px

预设

导入

一层一层地构建阴影

这个 box-shadow 生成器会为你写好 CSS <code>box-shadow</code> 属性。按需叠加任意多层阴影,分别调节每层的水平和垂直偏移、模糊、扩展、颜色和不透明度,切换为内阴影(inset),并在任意背景上实时查看预览框的变化。可以从柔和阴影、Material 风格的层级、新拟态(neumorphism)、硬边偏移和发光等预设开始,然后复制 CSS 或 Tailwind 的 <code>shadow-[…]</code> 类。粘贴现有阴影即可编辑。一切都在你的浏览器中运行。

如何创建 CSS box-shadow

  1. 1选择一个接近需求的预设,或保留默认的多层阴影。
  2. 2选中一层,设置 X 和 Y 偏移、模糊、扩展、颜色和不透明度。打开 Inset 可在框内绘制阴影。
  3. 3使用添加图层、复制、排序和隐藏图层来组合多个阴影。
  4. 4调整预览的背景、框的颜色、圆角半径和尺寸,使之与你的设计一致。
  5. 5复制 CSS 或 Tailwind 类。

box-shadow 各个值的含义

X 和 Y 偏移
阴影向右和向下移动的距离。负值则向左和向上移动。光源位于页面上方时,Y 偏移为正值。
模糊半径
边缘的柔和程度。0 会得到框的清晰副本;数值越大,阴影铺得越宽、越淡。不能为负值。
扩展半径
在模糊之前放大或缩小阴影。负扩展配合大模糊可以防止柔和阴影从两侧露出,这正是大多数“柔和”阴影背后的技巧。
颜色
通常是低不透明度的黑色或背景的深色调。用背景色调给阴影着色,看起来比纯灰色更自然。
inset
把阴影画在边框内侧而不是外侧,让框看起来是凹陷的。内阴影和外阴影可以写在同一条声明中。

为什么要叠加多层阴影?

真实的阴影在物体几乎接触表面的地方有一块深而集中的本影,外围则是柔和宽广的半影。单层 box-shadow 只能画出其中之一。叠加两到五层、偏移和模糊逐层翻倍、每层不透明度都很低的阴影,就能得到现代设计系统所用的平滑逼真的层次感。平滑多层预设正是这样做的。

图层从前往后绘制:列表中的第一层位于最上方。用箭头按钮调整顺序,用眼睛图标隐藏某一层,就能看出它起了什么作用。隐藏的图层不会出现在复制的 CSS 中。

层级、新拟态及其他风格

层级 1–5 预设沿用 Material Design 经典的卡片阴影:每个层级都把一个环境阴影和一个主阴影组合在一起,让卡片离页面越来越“高”。

新拟态在与背景同色的框上使用两个阴影:一个向右下偏移的深色阴影,一个向左上偏移的浅色阴影。只有框和背景颜色一致时才有效,所以预设会同时设置两者。硬边偏移完全去掉模糊,呈现扁平的粗野主义风格;发光使用零偏移和彩色阴影,适合焦点环和深色背景上的霓虹效果。

在 Tailwind CSS 中使用阴影

Tailwind 内置的 shadow-sm 到 shadow-2xl 已覆盖常见情况。其余情况下,生成器会写出任意值,例如 shadow-[0_10px_30px_-5px_rgba(0,0,0,0.15)]:由于类名不能包含空格,空格会被替换为下划线;这个类无需修改配置即可在 Tailwind 3 和 4 中使用。

可以把阴影与 CSS 渐变生成器生成的背景搭配,或用对比度检查器确认卡片上的文字依然清晰可读。

阴影与性能

在当前所有浏览器中,大模糊半径都由 GPU 绘制,用在静态元素上开销很小。但给 box-shadow 加动画会让元素每一帧都重绘;如果要在悬停时为层次感添加动画,可以把较大的阴影放在伪元素上,改为对它的 opacity 做动画。

常见问题

box-shadow 的语法是什么?
box-shadow: [inset] offset-x offset-y [blur] [spread] color;。只有两个偏移值是必填的。多个阴影用逗号分隔,例如 box-shadow: 0 1px 2px rgba(0,0,0,.1), 0 4px 8px rgba(0,0,0,.1);。
怎样做出柔和、低调的阴影?
使用低不透明度(10–20%)的黑色、较大的模糊、较小的 Y 偏移和负扩展,例如 0 10px 30px -5px rgba(0,0,0,0.15)。叠加两三层这样的阴影效果会更平滑。
怎样只在一侧加阴影?
把阴影向那一侧偏移,并使用与模糊大小相近的负扩展,使其不在其他边显示,例如只在底部显示的阴影:0 8px 6px -6px rgba(0,0,0,0.3)。
inset 有什么作用?
inset 把阴影画在框的内部而不是后面,让元素看起来像是嵌进页面里。常用于输入框和按下状态的按钮。
box-shadow 和 drop-shadow 有什么区别?
box-shadow 沿着元素的盒子和圆角绘制。filter: drop-shadow() 函数则沿着实际可见的像素绘制,例如透明 PNG 或 SVG 图标的轮廓,但它没有扩展值,也不支持 inset。
如何在 Tailwind 中使用自定义阴影?
从生成器复制 Tailwind 类,即 shadow-[0_4px_12px_rgba(0,0,0,0.15)] 这样的任意值,然后添加到元素上。也可以把 CSS 值写入主题的 boxShadow 配置,为它起个名字。
可以编辑已有的阴影吗?
可以。把 box-shadow 值、完整声明或 Tailwind 的 shadow-[…] 类粘贴到“导入”中。rem 和 em 长度按 16px 换算。
我的 CSS 会被发送到别处吗?
不会。生成器完全在你的浏览器中运行。