详解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和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
Apr 16 HTML / CSS
CSS3实例分享--超炫checkbox复选框和radio单选框
Sep 01 HTML / CSS
实例教程 纯CSS3打造非常炫的加载动画效果
Nov 05 HTML / CSS
CSS3实现的炫酷菜单代码分享
Mar 12 HTML / CSS
CSS3,线性渐变(linear-gradient)的使用总结
Jan 09 HTML / CSS
Html5中的桌面通知Notification的实现
Sep 25 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
May 29 HTML / CSS
浅谈html5标签css3的常用样式
Oct 20 HTML / CSS
html5开发三八女王节表白神器
Mar 07 HTML / CSS
canvas绘图按照contain或者cover方式适配并居中显示
Feb 18 HTML / CSS
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
Oct 16 HTML / CSS
如何用H5实现好玩的2048小游戏
Jul 23 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
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
js一组验证函数
2008/12/20 Javascript
Javascript 日期处理之时区问题
2009/10/08 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
Python切片索引用法示例
2018/05/15 Python
python处理csv中的空值方法
2018/06/22 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
如何通过python画loss曲线的方法
2019/06/26 Python
在django中自定义字段Field详解
2019/12/03 Python
python实现手势识别的示例(入门)
2020/04/15 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
英国足球店:UK Soccer Shop
2017/11/19 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
2013年入党人员的自我鉴定
2013/10/25 职场文书
两年的个人工作自我评价
2014/01/10 职场文书
幼教简历自我评价
2014/01/28 职场文书
小学班级口号
2014/06/09 职场文书
2015年仓库工作总结
2015/04/09 职场文书
担保书怎么写 ?
2019/04/22 职场文书
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS