shadow-md 对应 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06),视觉上呈现中等浮起效果,比 shadow-sm 更明显、比 shadow-lg 更轻盈。
Tailwind 的 shadow- 工具类不是随意命名的,每个都映射到预设的 box-shadow 值。比如 shadow-md 编译后是 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06),而 shadow-lg 更重,y 偏移更大、模糊半径更高、透明度略高。
实际使用时别死记数值,但得知道:数值越“大”,视觉上卡片越“浮起”,也越容易在浅色背景上显得突兀。
shadow-sm 适合表单输入框或微弱分层,几乎不压暗背景shadow(无后缀)是默认中性阴影,兼容性最稳shadow-xl 在深色模式下可能过重,建议搭配 dark:shadow-lg 调整theme.boxShadow 配置,直接写 shadow-[0_8px_20px_rgba(0,0,0,0.15)] 也能用,但会增大构建体积默认阴影用的是 rgba(0,0,0,0.x),在深色背景上对比度崩塌,看起来像脏污或干脆隐形。这不是 Tailwind 的 bug,而是 CSS 本身限制——阴影颜色没自动适配背景。
解决方式不是换颜色,而是调整透明度和偏移组合:
立即学习“前端免费学习笔记(深入)”;
dark:shadow-md + shadow-sm 组合,避免深色下过度压暗shadow-[0_4px_6px_rgba(56,189,248,0.15)](青蓝色调),比纯黑更通透shadow-2xl,它在 #1e293b 背景上基本不可见@layer base 全局重置 * { box-shadow-color: transparent; },会导致所有阴影失效,别这么干这是 box-shadow 渲染机制导致的常见假象:阴影和卡片内容之间没有像素对齐,尤其在缩放、transform 或 subpixel 渲染场景下更明显。
rounded-lg 和 shadow-lg —— 圆角半径和阴影模糊半径冲突时易出毛边,可尝试 rounded-md shadow-md 匹配backdrop-blur,两者混合渲染会放大边缘噪点shadow 的亚像素处理有变化,若只在 Chrome 出问题,加 will-change: transform 可缓解translate-z(0) 强制 GPU 加速,否则阴影可能被裁剪运行时根据状态(如 hover / focus / disabled)切换阴影,应该用 class,而不是拼接字符串写 style="box-shadow: ..."。
hover:shadow-lg focus:shadow-xl disabled:shadow-none 最简洁,且支持 JIT 编译按需生成shadow-${level} 动态 class,再在 tailwind.config.js 的 theme.extend.boxShadow 里定义 sm: '...'、md: '...'、lg: '...'
className={`shadow-${isHovered ? 'lg' : 'sm'}`} 这种写法——JIT 模式下未声明的 shadow-lg 不会被包含进最终 CSS阴影不是装饰开关,它是视觉层级的语言。选错一个 shadow 类,可能让卡片从“轻盈悬浮”变成“沉底积灰”,而这种差异往往在设计稿里看不出来,只在真实设备上才暴露。