关于box-shadow和drop-shadow的显著区别

关于box-shadow和drop-shadow的显著区别

一、box-shadow

box-shadow是css3中新增的属性,用于增加边框阴影,让原有的元素变得更多样性,它名下有四位小弟,老大控制水平方向偏移,老二控制垂直方向偏移,老三控制模糊度,最小的老四控制阴影颜色。

其中老大老二老三是一组三胞胎,都是像素(px)家族的,而老大老二又是同卵,控制的都是阴影的偏移,老大正值向右偏移,负值向左偏移;老二正值向下偏移,负值向上偏移;老三是异卵,控制引用的模糊度,取值范围是(0,+∞),当值为0的时候表示不模糊,值越大越模糊,当值小于0的时候,阴影消失。老四负责阴影颜色。一家子都在“挣钱养家”,只有老四负责“貌美如花”。

二、drop-shadow

drop-shadow也是css3特有的,用于投影,这里为什么说是投影而不是阴影呢?下面会提到。和box-shadow一样,它名下的家族完全复制过来就可以,成员和代表的意思都一样。

三、box-shadow和drop-shadow的区别

1.兼容性

box-shadow在IE9以上就支持了,基本上各大浏览器都支持,而drop-shadow在IE13以上才支持,而谷歌chrome浏览器是不支持的,这是在我应用的时候发现的,在懵逼了几秒之后,决定用火狐FireFox试一下,居然成功了!因为使用的是mac系统,没有IE,所以,下面的展示就用FireFox来实现。

2.写法

box-shadow直接写就可以了,简单粗暴,比如:

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

drop-shadow就不一样了,就好比box-shadow是个成年能独立的人,能一手抓好多东西,而drop-shadow就是个还不能独立的小孩,出门得有大人领着,同时手小,带的东西不能一把抓,只能背个小书包把东西装里面,也就是用代码中的括号,比如:

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

filter是滤镜的意思,具体的我就不在这讲了,有兴趣的可以参考一下菜鸟教程:http://www.runoob.com/cssref/css3-pr-filter.html

3.表现效果

在同样参数下,box-shadow和drop-shadow表现的效果是不一样的,下面用我喜欢的idol,前天刚入伍的TOP给大家演示一下:

box-shadow下:

drop-shadow下:

两张图片对比下你会发现,box-shadow的阴影在越接近图片边缘的时候比drop-shadow的越黑,而且阴影的宽度也相对drop-shadow的小,从上边界和左边界就能看出来,box-shadow的阴影几乎看不清,而宽度相对较宽的drop-shadow就能看到。

4.盒阴影和投影

这里就提到上面说的投影了。虽然shadow就是阴影的意思,但是在严格意义上讲,drop-shadow更应该说是投影,而什么是盒阴影,什么是投影,用语言可能表达不清楚,直接上图给你看就知道了。

先上一串代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            *{
                padding: 0;
                margin: 0;
            }
            .dash1{
                width: 50px;
                height: 50px;
                margin: 0 auto;
                border: dashed 10px #beceeb;
                box-shadow: 5px 5px 10px black;
            }
            .dash2{
                width: 50px;
                height: 50px;
                margin: 50px auto;
                border: dashed 10px #beceeb;
                filter: drop-shadow(5px 5px 10px black);
            }
        </style>
    </head>
    <body>
        <div class="dash1"></div>
        <div class="dash2"></div>
    </body>
</html>

展现的结果就是下面这样

box-shadow:

drop-shadow:

可以很明显的看出区别,为什么会这样呢?在这里我用的是div标签,大家都知道,div标签是个块标签,说白了是个盒模型,指的是一块区域,box-shadow的属性只能添加到盒模型外面,因此内部的东西是不会添加上的,就变成上图的样子,中间还是白色部分。而drop-shadow就不一样了,他是把选中的所有的非透明区域都做了阴影效果,就相当于一种真正的投影,这里为了看得更清楚特意把边框弄成虚线,所以能看到凡是边框显示出来的部分,都有drop-shadow属性,这也就是为什么我说他是投影更确切。

四、结束语

关于box-shadow和drop-shadow的主要区别就这些,还有一些box-shadow特有的阴影叠加、内阴影效果什么的我就不说了,有兴趣的可以百度了解一下。知识点很小,但也是花了我一上午的时间组织语言,尽量让大家一看就懂,如果有什么不对的欢迎指出!第二篇博客随笔就此告终!撤~

时间: 2024-12-06 11:49:42

关于box-shadow和drop-shadow的显著区别的相关文章

Qt Quick里的图形效果:阴影(Drop Shadow)

Qt Quick提供了两种阴影效果: DropShow,阴影.这个元素会根据源图像,产生一个彩色的.模糊的新图像,把这个新图像放在源图像后面,给人一种源图像从背景上凸出来的效果. InnerShadow,内阴影.这个元素会根据源图像,产生一个彩色的.模糊的新图像,与 DropShadow不同的是,新图像会放在源图像里面. 效果 下面是我设计的示例效果. 首先是 DropShadow : 图1 阴影效果 然后是内阴影效果: 图2 内阴影效果 源码分析 如图1所示,界面被分为三部分. 最上面的是源图

OpenGL 阴影之Shadow Mapping和Shadow Volumes

先说下开发环境.VS2013,C++空项目,引用glut,glew.glut包含基本窗口操作,免去我们自己新建win32窗口一些操作.glew使我们能使用最新opengl的API,因winodw本身只包含opengl 1.1版本的API,根本是不能用的. 其中矩阵计算采用gitHub项目openvr中的三份文件, Vectors.h ,Matrices.h, Matrices.cpp,分别是矢量与点类,矩阵类,我们需要的一些操作,矢量的叉乘和点乘,矩阵转置,矩阵的逆,矩阵与矢量相剩等. 这里主要

Shadow DOM获取Shadow host的内容

在Shadow DOM(二)中,介绍了与Shadow DOM相关的概念,包括Shadow host等等. 本文将重点介绍如何将Light DOM中的内容传到Shadow DOM中. 而在Shadow DOM 与HTML Templates一文的示例中可以看到Shadow host: <div class="host">Hello World!</div>的内容在该节点创建并附加Shadow Root后并没有在浏览器中得到渲染,也就是说Shadow host的内容

MySQL笔记-turncat、drop、delete的区别

TRUNCATE 语法: TRUNCATE TABLE [schema.] table [{DROP | REUSE} STORAGE]功能: 删除整个表的数据并释放空间 描述: 由于Truncate 是DDL 命令,所以执行过程中原数据不放在Rollback Segment 中,不产生回滚数据 ,不产生Redo Log . Truncate , Drop 等DDL命令都是隐含提交的. 需要drop的操作权限 相当于这样的流程:先drop table 然后 create table. 不记录日志

drop.delete.trauncat的区别

delete删除数据,保留表结构,可以回滚,如果数据量大,很慢,回滚是因为备份了删除的数据(删除数据时有两个动作,删除和备份) truncate删除所有数据,保留表结构,不可以回滚,一次全部删除所有数据,速度相对较快(删除数据时只有一个动作:删除) drop 删除数据和表结构,删除速度最快 between包括最大值和最小值

SQl中drop与truncate的区别

在对SQL的表操作时,我们因不同的需求做出相应的操作. 我来对比一下truncate table '表明'与drop table '表格名'的区别,跟大家一起学习. drop table '表格名'----我们不在需要此表,或是此表作废了,就把此表delete,删除,drop truncate table '表名' ---我不需要此表的信息,但是我要用此表的表结构,就用truncate. 这是本人的理解,如有错误,希望大家丢砖啊!!!!!!

drop user和drop user cascade的区别

1.oracle数据库中删除用户有两种命令,一种是 drop user xxx:另外一个种是drop user xxx cascade; 2.官方的说明如下: Dropping a Database User: Example If user Sidney's schema contains no objects, then you can drop sidney by issuing the statement: DROP USER sidney;  --sidney为用户名,用sys登录执行

delete trancate drop三者之间的区别

简而言之: 删除效果及速度:Drop > truncate > delete 原因: delete,逐行删除,且用日志逐行记录用于回滚,会执行删除触发器:       ------>   只删除记录,不会释放记录和表占的空间. truncate逐行删除,在日志中逐行记录,无法回滚.不执行删除触发器   ------>   删除记录,会释放空间到默认大小. drop释放存储表数据所用的数据页来删除数据,只在日志中记录页的释放   ------>   释放所有空间. 原文地址:h

drop,delete,truncate 的区别

(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的.并且在删除的过程中不会激活与表有关的删除触发器.执行速度快. (2)表和索引所占空间. 当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小, DELETE操作不会减少表或索引所占用的空间. drop语句将表所占用的空间全释放掉. (3

[工作积累] shadow map问题汇总

1.基本问题和相关 Common Techniques to Improve Shadow Depth Maps: https://msdn.microsoft.com/en-us/library/windows/desktop/ee416324(v=vs.85).aspx Cascaded Shadow Maps https://msdn.microsoft.com/en-us/library/windows/desktop/ee416307(v=vs.85).aspx Soft shadow