盒阴影生成器

盒阴影生成器(box-shadow 生成器),是指在线可视化调节阴影的水平偏移、垂直偏移、模糊半径、扩展半径与颜色,实时预览并一键复制 CSS box-shadow 代码的前端工具。它免费、无需注册,支持多层阴影叠加、内阴影 inset、预设阴影库与粘贴代码反解析。本工具的预览区直接渲染最终 box-shadow,所见即所得,不做二次转换。阴影参数全在浏览器本地计算,内容不上传。

卡片

阴影约向上溢出 2px、向下 10px、向左 6px、向右 6px(按 偏移 + spread + 模糊半径 / 2 估算,各引擎的高斯模糊是近似实现,实测可能差 1~2px)。 父容器若写了 overflow: hidden,超出这个范围的阴影就会被裁掉。

阴影图层(1 / 8

列表越靠前的层画得越靠上:CSS 的多层阴影 CSS 写法是「先声明的盖在上面」,和「后写的盖住先写的」这种直觉相反。

1
阴影颜色
Tailwind 默认阴影Tailwind CSS v3.4 默认主题
Material 层级阴影Material Design 2 elevation
拟物阴影生成(neumorphism,按底色现算一亮一暗两层)

预设库更新于 2026-08;Tailwind 组对照的是 v3.4 默认主题。

生成的 CSS box-shadow 代码
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
filter: drop-shadow() 等价对照: filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.15));

🔒 阴影参数的生成与解析全部在你的浏览器本地完成,内容不上传、不外发。预览区直接渲染最终 box-shadow, 和你复制走的是同一串代码。默认颜色为 rgba(0, 0, 0, 0.15)

如何使用盒阴影生成器

1

拖动滑杆调节水平偏移、垂直偏移、阴影模糊半径与扩展半径 spread,再用取色器或手输 rgba 设置阴影颜色,预览区实时跟着变。

2

需要更立体的效果就点「添加阴影层」叠加多层阴影,或勾选「内阴影 inset」把阴影画到元素内部;也可以直接点 Tailwind、Material 预设或拟物阴影生成载入后再微调。

3

在底部切换纯 CSS、带前缀、Tailwind、仅片段四种导出格式,点「复制代码」把生成的 CSS box-shadow 代码粘进你的项目。

关于盒阴影生成器的常见问题

盒阴影生成器会上传数据吗?安全吗?
不会上传。盒阴影生成器的参数调节、代码生成与粘贴反解析全部在你的浏览器本地完成,阴影参数与颜色不会发送到服务器,预览区用的就是生成的同一串 CSS,关闭页面即清除。(站点自身仅有匿名访问量统计,与你编辑的阴影内容无关。)
手机上能用盒阴影生成器吗?需要装软件吗?
可以,且不用下载任何 App 或插件。盒阴影生成器是纯网页实现,手机、平板、电脑浏览器打开即用,滑杆、取色器、图层上移下移按钮都是原生控件,触屏可以直接操作。数值输入框保留了草稿态,手机上逐字符重输不会被吃掉字符,调完点复制就能把代码粘到你的编辑器里。
box-shadow 的四个数值分别代表什么意思?
box-shadow 参数含义按顺序是:水平偏移(正值向右)、垂直偏移(正值向下)、阴影模糊半径(越大越柔和,不能为负)、扩展半径 spread(正值让阴影整体变大、负值收缩)。只写两个数值时后两个按 0 处理,颜色写在最后,省略时浏览器按 currentColor 处理。
盒阴影生成器支持内阴影 inset 吗?
支持。勾选图层上的「内阴影 inset」,阴影就会画到元素内部而不是外面,输出的代码会在这一层最前面加上 inset 关键字。内阴影 inset 常用来做输入框的凹陷感、按钮按下态和进度条内槽;同一个元素里内阴影和外阴影可以混着叠加。
box-shadow 怎么加多层阴影?顺序是怎么排的?
多层阴影 CSS 的写法是用逗号把每层串起来,本工具点「添加阴影层」即可,最多 8 层。顺序要特别注意:逗号列表里先声明的那层画在最上面,越靠后越靠下,和「后写的盖住先写的」这种直觉相反。真实设计系统的层级阴影几乎都是两三层叠出来的,可以点 Material 预设看现成例子。
box-shadow 怎么写才自然不发灰?
关键在颜色不在模糊。box-shadow 怎么写才自然,经验是用低透明度的纯黑(浅底上 rgba 的 alpha 取 0.1 到 0.2),或者取底色的同色系深色,别用不透明的中灰——灰色会在底色上糊一层脏色。另外模糊半径越大透明度就要越低:12px 模糊配 0.15 上下,40px 模糊得降到 0.08 左右,否则阴影会糊成一团。页面上的深色底与棋盘格背景就是用来验这一点的。
盒阴影生成器能导出 rem 单位的阴影吗?
能。导出区的「单位」下拉可以切到 rem 或 em,并单独设置换算基准(默认 16px)。阴影 rem 单位换算就是一次除法:16px 基准下 4px 写成 0.25rem、12px 写成 0.75rem,工具会把四个数值一起换算,视觉效果不变。只换单位不换数值会直接改变阴影大小,所以这一步不要手改;项目改过根字号的话,把换算基准调成实际值再导出。
hover 阴影动画会影响页面性能吗?
静态阴影不用担心,开销在动画上。box-shadow 性能开销主要来自模糊,模糊半径越大每帧要重绘的像素越多,把它直接写进 transition 会让浏览器逐帧重算模糊,长列表上容易掉帧。更稳的 hover 阴影效果写法是把目标阴影放到 ::after 伪元素上、初始 opacity 为 0,hover 时只过渡透明度。本工具只生成阴影声明本身,过渡与伪元素要在你的项目里补。
生成的 box-shadow 代码需要加浏览器前缀吗?
基本不需要。box-shadow 从 IE9 起就是标准属性,现代主流浏览器全部原生支持,直接用无前缀写法即可。本工具的「带前缀」标签只是额外给出一条 -webkit-box-shadow 声明,供需要兼容极旧内核的场景使用,正常项目加了反而是冗余代码。
为什么我写的 box-shadow 不显示或被裁掉了?
box-shadow 不显示常见有三种原因:一是偏移、模糊、扩展都是 0 且颜色不透明,阴影正好被元素自身盖住;二是颜色透明度为 0;三是父容器写了 overflow: hidden,超出盒子的那部分阴影被裁掉了。本工具会实时算出阴影约向四个方向溢出多少像素,照着给父容器留出空间就能解决。
box-shadow 和 filter: drop-shadow 有什么区别?
box-shadow 描的是元素的盒子(含 border-radius),filter: drop-shadow 描的是元素实际不透明像素的轮廓,所以给透明背景的 PNG 或不规则 SVG 加阴影要用后者。另外 drop-shadow 没有扩展半径 spread、也没有内阴影 inset。本工具在单层、非 inset 且 spread 为 0 时会给出等价写法,其余情况会说明为什么不能等价转换。
盒阴影生成器能导出 Tailwind 阴影代码吗?
能。切到「Tailwind」标签就会得到 shadow-[…] 形式的任意值类名,值里的空格已按 Tailwind v3.4 的任意值语法转义成下划线,可以直接粘进 className 使用,不用再手动改写。如果只想用官方档位,页面下方还有一张 Tailwind 阴影代码对照表,数值全部取自官方默认主题,点一下就能载入编辑器继续微调。

box-shadow 参数含义速查表

box-shadow 的完整语法是「inset? 偏移X 偏移Y 模糊 扩展 颜色」,六个位置的含义见下表,顺序固定、不能调换。这件事在中文里还有好几种叫法:盒阴影生成器、CSS 阴影生成器、在线阴影生成工具,正文里说的盒子阴影 CSS、框阴影、投影,指的都是同一个 CSS 属性 box-shadow,产出的就是一段 CSS 阴影代码。英文站点上的 box shadow generator、CSS box shadow generator、box shadow css 说的也是它。要注意两个容易混的英文词:drop shadow 通常指 filter: drop-shadow(),描的是不透明像素的轮廓而不是盒子(区别见本页最后一节);neumorphism 阴影(新拟态)则特指本页「拟物阴影生成」那种同色系一亮一暗的双层写法,不是另一个 CSS 属性。搜这些词落到的都是同一件事:把盒子阴影 CSS 的四个数值和颜色调出来,再复制走。

box-shadow 的语法是 inset? 偏移X 偏移Y 模糊 扩展 颜色,顺序固定
参数含义常见取值
偏移 X水平偏移,正值把阴影推向右边、负值推向左边0 到 8px;卡片阴影一般写 0
偏移 Y垂直偏移,正值把阴影推向下方,模拟顶部光源2px 到 24px
阴影模糊半径过渡带的宽度,越大越柔和;CSS 规范不允许负值4px 到 40px
扩展半径 spread整体放大或缩小阴影,负值让阴影收缩、只在下方露一条-12px 到 8px
颜色支持 HEX 与 rgba;用低透明度的黑比用灰色自然得多rgba(0, 0, 0, 0.1) 前后
inset写在最前面,把阴影画到元素内部(内阴影 inset)输入框凹陷、按钮按下态

Tailwind 阴影代码对照表:官方默认档位

下表数值取自 Tailwind CSS v3.4 的默认主题,由本站的预设数据表现算渲染,点页面上方对应按钮即可载入继续微调。

Tailwind CSS v3.4 默认阴影档位与对应的 CSS box-shadow 代码
类名box-shadow 值层数
shadow-sm0 1px 2px 0 rgba(0, 0, 0, 0.05)单层
shadow0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)2 层叠加
shadow-md0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)2 层叠加
shadow-lg0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)2 层叠加
shadow-xl0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)2 层叠加
shadow-2xl0 25px 50px -12px rgba(0, 0, 0, 0.25)单层
shadow-innerinset 0 2px 4px 0 rgba(0, 0, 0, 0.05)单层内阴影

Material 阴影代码每一级都是三层叠加——本影、半影、环境光各一层,例如 elevation 1 就是 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12),这是多层阴影最典型的用法。

卡片阴影 CSS、按钮阴影 CSS 与内阴影怎么挑参数

常见场景的取值习惯(都能在上面的编辑器里直接调出来)
场景取值思路起手参数
卡片阴影 CSS偏移 X 归 0、垂直偏移小、模糊大,做出柔和的漂浮感0 4px 12px rgba(0, 0, 0, 0.15)
按钮阴影 CSS静态时浅、悬停时加大偏移与模糊,做出抬起效果0 2px 6px rgba(0, 0, 0, 0.16)
输入框内阴影 inset加 inset、偏移向下、模糊小,做出内凹的槽感inset 0 2px 4px rgba(0, 0, 0, 0.08)
拟物阴影生成和底色同色系的一亮一暗两层,方向相反页面上填底色后点「生成拟物阴影」现算
发光描边偏移与模糊都为 0、只留扩展半径,等价于一圈实色边0 0 0 3px rgba(59, 130, 246, 0.5)

CSS 阴影怎么调才自然:颜色与透明度的取法

CSS 阴影怎么调才自然,决定性的不是模糊半径而是颜色:现实里没有灰色的影子,只有被遮暗的底色,所以阴影要么用低透明度的纯黑叠上去,要么取底色的同色系深色,唯独不要用不透明的中灰。本页上方的编辑器本身就是一个 box-shadow 在线预览器,浅色底、深色底、棋盘格三种背景可以随时互切——同一串 CSS 阴影代码在浅底上顺眼、换到深底上就发白发脏,多半就是颜色选错了。

三种常见的阴影颜色写法,以及它们在不同底色上的表现
颜色写法实际观感适用场景
不透明中灰 #999在任何底色上都糊一层脏色,深色底上尤其明显,看起来像脱离了背景不建议
低透明度纯黑 rgba(0, 0, 0, 0.1~0.2)透过阴影看到的仍是底色本身,只是被压暗,浅底上最稳的默认解卡片、按钮、弹层
底色同色系深色像被环境光染过,蓝底配深蓝阴影比配黑色更贴有明确主色的界面、拟物阴影生成

透明度的经验值和模糊半径成反比:模糊 12px 左右配 alpha 0.15 上下,模糊拉到 40px 就要降到 0.08 附近,否则大面积的半透明黑会把整块区域拖灰。多层阴影则反过来——每层各取 0.1 到 0.2 的低透明度叠加,层次比单层写一个 0.3 自然得多,Material 组预设的三层正是 0.2 / 0.14 / 0.12 这样递减的。

box-shadow、text-shadow 与 filter: drop-shadow 的区别

三者都能做阴影,但作用对象与可用参数并不相同
写法作用对象支持的参数
box-shadow元素的盒子,跟随 border-radius偏移、模糊、扩展 spread、内阴影 inset、多层
text-shadow文字字形偏移、模糊、颜色;没有扩展、没有 inset
filter: drop-shadow()元素实际不透明像素的轮廓偏移、模糊、颜色;没有扩展、没有 inset

透明背景的 PNG、不规则 SVG 图标要贴合轮廓投影时用 drop-shadow;普通的卡片、按钮、输入框一律用 box-shadow。本工具只做 box-shadow,不把 text-shadow 硬合并进来(语法不同,合并只会误导)。

box-shadow 性能开销与 hover 阴影动画怎么写

box-shadow 性能的开销集中在模糊上:模糊半径越大,浏览器每帧要重绘的像素越多。静态阴影只算一次,再大也无所谓;真正会掉帧的是把 box-shadow 直接写进 transition,让浏览器逐帧重算模糊,元素一多就明显卡顿。

想做出「悬停抬起」的效果时,三种写法的代价并不一样
写法每帧要做的事建议
transition: box-shadow逐帧重新计算并重绘模糊单个元素可以,长列表慎用
伪元素放目标阴影 + transition: opacity只做合成,不重绘模糊hover 阴影效果推荐这种
配合 transform: translateY(-2px)同样只做合成加上才像抬起,不然像原地变胖

本工具只负责把 box-shadow 这一条声明调好并复制出来,过渡、伪元素与 hover 状态要在你自己的项目里写;把静态态和悬停态分别在这里调好、各复制一份,是最省事的做法。