drop-shadow 能识别元素实际像素轮廓并生成贴合边缘的阴影,而 box-shadow 始终以矩形边界框投射阴影;前者适用于透明背景图像且视觉更自然,后者则忽略内容透明度与形状细节。
在CSS中,drop-shadow 和 box-shadow 虽然都能创建阴影效果,但它们在颜色处理和渲染方式上有本质区别,尤其是在涉及透明度和元素形状时表现明显。
像素box-shadow 使用你设置的颜色直接绘制矩形阴影,它围绕的是元素的边界框(包括border-box),不会识别元素内部的透明区域或圆角以外的形状细节。
box-shadow: 5px 5px 10px blue; 就是纯蓝色阴影drop-shadow() 是滤镜(filter)的一部分,它会分析元素渲染后的实际不透明像素来生成阴影,因此能“看到”透明背景中的图形轮廓。
假设有一个半透明红色(rgba(255,0,0,0.5))的圆形图片:
基本上就这些。关键在于:box-shadow 忽略内容细节,而 drop-shadow 尊重渲染后的像素轮廓,这使得两者在颜色呈现和阴影位置上会有直观差别。