详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用


Posted in HTML / CSS onAugust 24, 2020

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

一、兼容性不一

CSS3 box-shadow从IE9浏览器开始就支持了,兼容性如下截图:

详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用

filter中的drop-shadowIE13才开始支持,移动端Android4.4才开始支持。兼容性如下图:

详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用

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

filter中的drop-shadow语法如下:

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

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

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

详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用

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

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

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

详解CSS3 filter:drop-shadow滤镜与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;

详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用

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

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

box-shadow:

详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用

filter:drop-shadow:

详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用

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

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

详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用

六、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>

详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用

到此这篇关于详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用的文章就介绍到这了,更多相关CSS3 filter:drop-shadow与box-shadow内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
使用CSS实现阅读进度条
Feb 27 HTML / CSS
详解CSS3 弹性布局快速入门
Jun 06 HTML / CSS
CSS3旋转——彩色扇子兼容firefox浏览器
Jun 04 HTML / CSS
css3中transition属性详解
Sep 02 HTML / CSS
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
Sep 02 HTML / CSS
用CSS3绘制三角形的简单方法
Jul 17 HTML / CSS
CSS3中媒体查询结合rem布局适配手机屏幕
Jun 10 HTML / CSS
html5开发之viewport使用
Oct 17 HTML / CSS
HTML5+CSS3应用详解
Feb 24 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
Apr 23 HTML / CSS
使用phonegap操作数据库的实现方法
Mar 31 HTML / CSS
AmazeUI 输入框组的示例代码
Aug 14 HTML / CSS
css3实现动画的三种方式
Aug 24 #HTML / CSS
使用CSS3实现字体颜色渐变的实现
Aug 10 #HTML / CSS
CSS3实现线性渐变用法示例代码详解
Aug 07 #HTML / CSS
CSS3 input框的实现代码类似Google登录的动画效果
Aug 04 #HTML / CSS
纯CSS3+DIV实现小三角形边框效果的示例代码
Aug 03 #HTML / CSS
纯CSS3实现鼠标滑过按钮动画第二节
Jul 16 #HTML / CSS
css3实现小箭头各种图形效果
Jul 08 #HTML / CSS
You might like
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
python实现简单flappy bird
2018/12/24 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
护士岗前培训自我评鉴
2014/02/28 职场文书
公证书标准格式
2014/04/10 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
社会工作专业自荐信
2014/09/26 职场文书
工作失职检讨书500字
2014/10/17 职场文书
搬迁通知
2015/04/20 职场文书
道歉信怎么写
2015/05/12 职场文书
团队拓展训练感想
2015/08/07 职场文书
python游戏开发Pygame框架
2022/04/22 Python