接触阴影加环境阴影的轻柔卡片
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 4px 12px rgba(0, 0, 0, 0.08);一层紧凑、模糊小的阴影确定接触点,一层更长更柔的阴影营造环境光的感觉。大多数现代设计系统都采用这种模式。
设计多层 CSS box-shadow,实时预览并复制可直接上线的 CSS。
最后更新
Coddy 让你在浏览器里编写真实代码来学习:互动课程、即时反馈,卡住时还有 AI 帮忙。
box-shadow 是一个 CSS 属性,可以给任何元素加上投影、发光和内凹效果。要让扁平的设计有“高度”感,它是最有效的手段:卡片从页面上浮起,弹窗悬浮在内容之上,按钮看起来可以按下去。
诀窍在于,好看的阴影很少只有一层。现实中的阴影更柔和,还有环境光的反射,所以大多数设计系统(Material、iOS、Tailwind)都会叠加 2 至 3 条偏移和不透明度各不相同的 box-shadow 声明。手写这些很麻烦;用生成器,你可以直观地调整每一层,并实时看到叠加后的效果。
Coddy 的生成器支持任意多层阴影,同时支持外阴影和内阴影,每层都可以单独设置颜色和不透明度,还提供涵盖最常见效果的预设:轻柔卡片、锐利投影、品牌发光、内凹效果和新拟态表面。复制 CSS 后直接粘贴到样式表里即可,无需上传,无需账号,也没有水印。
box-shadow: [inset] <x> <y> <blur> <spread> <color>。inset 让阴影出现在元素内部;不加它,阴影就落在元素外部。rgba()(或 hsla()),这样每层的不透明度都可以单独调整。低不透明度的纯黑看起来是柔和的灰色阴影;完全不透明的纯黑则像生硬的剪影。box-shadow 由 GPU 合成,是成本最低的视觉提升手段之一。它不影响布局,元素会保持原来的大小和位置。选择一个符合你想要的感觉的预设:轻柔卡片、柔和浮起、锐利投影、品牌发光、内凹效果或新拟态。这些预设都是很好的起点,你可以继续微调。
拖动 X/Y 偏移、模糊、扩展、颜色和不透明度的滑块。左侧的预览会实时更新。不透明度越低、模糊越大,阴影看起来越柔和。
点击“添加图层”叠加第二层阴影。现实中的层次感几乎总是用两层来实现:一层短而紧(接触阴影),一层长而柔(环境阴影)。
打开“内阴影”后,阴影会画在元素内部,而不是四周。再配合一层轻微的外阴影,就能做出按钮被按下的效果。
当预览和你的设计一致时,点击“复制 CSS”。把结果粘贴到样式表中,生成的规则包含所有启用的图层。
box-shadow: x y blur spread color 中每个值的含义和作用。
| 值 | 效果 | 常用范围 |
|---|---|---|
| X 偏移 | 水平移动阴影;正值向右 | −40px 至 40px |
| Y 偏移 | 垂直移动阴影;正值向下 | 0px 至 40px,模拟自然光 |
| 模糊半径 | 让阴影边缘变柔和 | 0px 至 80px |
| 扩展半径 | 在应用模糊之前放大或缩小阴影 | −30px 至 30px |
| 颜色 | 任何 CSS 颜色都可以,但 rgba() 能逐层调整不透明度 | 自然阴影用 rgba(0,0,0,0.05-0.3) |
inset | 把阴影画在元素内部 | - |
| 多层阴影 | 用逗号分隔;从后往前叠放 | 2 至 3 层就能有逼真的层次感 |
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 4px 12px rgba(0, 0, 0, 0.08);一层紧凑、模糊小的阴影确定接触点,一层更长更柔的阴影营造环境光的感觉。大多数现代设计系统都采用这种模式。
box-shadow: 0 0 24px 4px rgba(108, 140, 255, 0.45);把 X 和 Y 设为零,光晕就会均匀地向四周散开。一个较小的正扩展值会在模糊柔化之前让光晕更厚。请谨慎使用,彩色发光非常抢眼。
box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.18), inset 0 0 0 1px rgba(0, 0, 0, 0.06);内阴影画在元素内部。一层柔和的阴影营造出凹陷的感觉;一层极细的内阴影则加上一道淡淡的内边框,让轮廓更清晰。
filter: drop-shadow() 和 box-shadow 混用。drop-shadow() 会沿着 SVG 或图片的 alpha 遮罩生成阴影,适合不规则形状;而对于矩形元素,box-shadow 更快、更干净。box-shadow 不受元素自身的 overflow: hidden 影响。如果父元素设置了 overflow: hidden,阴影会被裁掉。box-shadow 的每个值分别是什么意思?box-shadow: x y blur spread color。前两个是偏移;blur 让边缘变柔和;spread 在模糊之前改变阴影大小;颜色可以是任何 CSS 颜色(用 rgba() 控制不透明度)。在开头加上 inset,阴影就会出现在元素内部。用逗号分隔每个阴影。它们按书写顺序从后往前渲染,所以先声明的阴影最终位于后声明阴影的下方。可以用这种方式把紧凑的接触阴影和柔和的环境阴影组合起来。
box-shadow 和 filter: drop-shadow() 有什么区别?box-shadow 沿着元素的矩形边框生成,绘制很快。drop-shadow() 沿着所作用对象的 alpha 通道生成(非常适合 SVG 和透明 PNG),但渲染成本更高。卡片和按钮用 box-shadow;不规则形状用 drop-shadow()。transform: scale()。box-shadow 会影响布局吗?overflow: visible。