[css动画]drop-shadow滤镜与box-shadow区别应用

要使用标准的CSS3实现某元素的投影效果,有两个套路,第一个就是使用常见的box-shadow, 第二个就是使用CSS3的filter阴影滤镜drop-shadow,那这两个阴影实现有什么具体的差异呢?

一、兼容性不一

css3 box-shadow从IE9浏览器开始就支持了,而filter中的drop-shadowIE13才开始支持,移动端Android4.4才开始支持;

二、参数值一样,表现效果有差异

filter中的drop-shadow语法如下:

filter: drop-shadow(x偏移, y偏移, 模糊大小, 色值);

例如:

filter:drop-shadow(5px 5px 10px black)

box-shadow: 5px 5px 10px black;

同样的参数值,但是box-shadow的阴影距离更小,色值要更深;

三、drop-shadow没有内阴影,不能阴影叠加

box-shadow支持inset内阴影,如:

box-shadow: inset 5px 5px 10px black;

但是,drop-shadow却没有。

box-shadow有个超屌的特性,就是阴影可以任意累加,因此,理论上我们可以使用box-shadow生成任意的图片。

filter中的drop-shadow就不可以。但是,drop-shadow有一个很厉害的特性,drop-shadow才是真正意义上的投影,而box-shadow只是盒阴影而已。

四、阴影 vs 盒阴影

分别应用box-shadow和drop-shadow滤镜:

border: 10px dashed #beceeb;

box-shadow: 5px 5px 10px black;

border: 10px dashed #beceeb;

filter: drop-shadow(5px 5px 10px black);

结果如图:

[css动画]drop-shadow滤镜与box-shadow区别应用_第1张图片

box-shadow顾名思意“盒阴影”,只是盒子的阴影;但是drop-shadow就符合真实世界的投影,非透明的颜色,我就有投影;透明部分,光线穿过,没投影,而什么盒子不盒子的,跟我没有任何关系。

五、drop-shadow实际应用

经常我们实现带有箭头指向的浮层面板的时候,考虑到兼容性,三角基本上都是使用border绘制的,没法使用 box-shadow,但是,矩形部分设计师希望是有阴影的,于是,就会出现下图所示的情况:

[css动画]drop-shadow滤镜与box-shadow区别应用_第2张图片

箭头没有阴影,蒙混过关。

现在,有了drop-shadow,阴影就真的变成了阴影了;

接下来,我们实现filter:drop-shadow实现尖角带阴影的提示面板:

HTML:

box-shadow

filter: drop-shadow

CSS:

.box {

margin: 40px; padding: 50px;

background-color: #fff;

position: relative;

font-size: 24px;

}


.cor {

position: absolute;

left: -40px;

widtd: 0; height: 0;

overflow: hidden;

border: 20px solid transparent;

border-right-color: #fff;

}

.box-shadow {

box-shadow: 5px 5px 10px black;

}

.drop-shadow {

-webkit-filter: drop-shadow(5px 5px 10px black);

}

如图:

[css动画]drop-shadow滤镜与box-shadow区别应用_第3张图片

低版本IE浏览器下,其实也有Shadow滤镜,不过是IE的私有滤镜。如果想要实现兼容IE9+的投影效果,估计要借助SVG来实现了。

总而言之,虽然drop-shadow滤镜亮点单一,但是这个亮点可以照亮整个北半球。

原文地址:mp.weixin.qq.com/s

你可能感兴趣的:([css动画]drop-shadow滤镜与box-shadow区别应用)