前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

CSS3 filter: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)

表示右下5像素偏移,10像素模糊的黑色阴影。眼见为实,看下面的图片示意。

但是,如果使用同样参数值的box-shadow,例如:

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

会发现,box-shadow的阴影距离更小,色值要更深:

三、drop-shadow没有内阴影效果

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

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

但是,drop-shadow却没有。

四、阴影 vs 盒阴影

drop-shadow有一个很厉害的特性,也就这一个特性,让其以后有足够的机会大放异彩!那就是,drop-shadow才是真正意义上的投影,而box-shadow只是盒阴影而已。

什么意思呢?

下面我们用CSS border写一个虚线框,例如:

border: 10px dashed #fa608d;

height: 50px;

width: 50px;

然后,我们分别应用box-shadow和drop-shadow滤镜:

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

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

box-shadow:

filter:drop-shadow:

box-shadow顾名思意“盒阴影”,只是盒子的阴影;你想啊,这盒子中间明明是透明的,结果,阴影的时候,居然光线没有穿透;但是filter:drop-shadow就符合真实世界的投影,只要是透明的都有投影。

filter: drop-shadow不仅可以穿透代码构建的元素的透明部分,PNG图片的透明部分也是可以穿透的,如下图:

六、drop-shadow的实际应用

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

箭头没有阴影,蒙混过关。现在,有了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 {

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

}

HTML代码:

<div class="box box-shadow">

<i class="cor"></i>

box-shadow

</div>

<div class="box drop-shadow">

<i class="cor"></i>

filter: drop-shadow

</div>

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言