详解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 相关文章推荐
如何利用CSS3制作3D效果文字具体实现样式
May 02 HTML / CSS
CSS3 text shadow字体阴影效果
Jan 08 HTML / CSS
使用CSS3编写类似iOS中的复选框及带开关的按钮
Apr 11 HTML / CSS
总结30个CSS3选择器
Apr 13 HTML / CSS
css3利用transform变形结合事件完成扇形导航
Oct 26 HTML / CSS
html5使用canvas实现跟随光标跳动的火焰效果
Jan 07 HTML / CSS
用HTML5制作一个简单的弹力球游戏
May 12 HTML / CSS
HTML5+CSS3:3D展示商品信息示例
Jan 03 HTML / CSS
html5组织内容_动力节点Java学院整理
Jul 10 HTML / CSS
AmazeUI 等分网格的实现示例
Aug 25 HTML / CSS
html中两种获取标签内的值的方法
Jun 10 HTML / CSS
CSS中calc(100%-100px)不加空格不生效
May 07 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
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
php编程每天必学之表单验证
2016/03/01 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
js异步加载的三种解决方案
2013/03/04 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
Python实现从URL地址提取文件名的方法
2015/05/15 Python
python正则分析nginx的访问日志
2017/01/17 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
python获取url的返回信息方法
2018/12/17 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
Python:slice与indices的用法
2019/11/25 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
如何用JQuery进行表单验证
2013/05/29 面试题
Shell脚本如何向终端输出信息
2014/04/25 面试题
廉政教育心得体会
2014/01/01 职场文书
经济国贸专业求职信
2014/06/18 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python
angular异步验证器防抖实例详解
2022/03/31 Javascript