两行CSS实现iOS10 新Drop Shadow样式

用户头像
上海/网页设计师/10年前/1095浏览
两行CSS实现iOS10 新Drop Shadow样式

随着iOS10的发布,带来了许多新特性,和一些非常细微的创新,正是这些细微的改变正悄悄地提升iOS操作过程的体验,这些隐藏的创意,就像埋藏古庙深处的宝藏一样等着我们去探索

我们先直接看Apple Music上面的效果

下面的图片跟设计引用自 Apple Music,我只是引用示例,如果觉得侵权了,请联系我删掉。

如上图的 Album 部分,仔细观察可以看出 drop shadow 是根据Box容器的内容去渲染的,给人一种通透的效果。当然,这里并不明显,我用 Sketch 模拟了一下,可以更好的展示这种效果,
废话不多说直接上图

素材图片来源网络搜索,仅用于示例

嗯,是不是看起来,不太难?
一眼看下去,也就复制一个元素然后,放下面,再模糊。
随便写个 -webkit-filter:blur(…px) 大概就完事了不是吗?
话是这么说,但只是这样,是不能满足我们的野心的!

那么我们要实现什么效果呢:

  • 投影模糊

  • 投影跟随内容的改变而改变 ,并且模糊

  • 不克隆多一个DOM元素

  • 不占用HTML的高宽计算(例如 padding ,margin 会涉及高宽计算, box-shadow不会)

  • 高性能(我记得若干年前有人为了模拟iOS工具栏那种模糊背景的效果,把整个DOM元素都克隆一份然后滚动,性能简直惨不忍睹)

那么开始整理我们的思路

  • 需要一个盒子容器

  • 需要一个能复制这个容器跟容器内容的CSS样式

  • 需要模糊

容器这个概念容易理解,随意写一个高宽的 DIV 么好了。
大概样式如下:

问题在下面两个需求。

这时候我们脑海中很容易就能想到3个属性满足上面这两条:

.css-a {-webkit-box-reflect: below }
.css-b {-webkit-filter: blur(6px) }
.css-c {-webkit-backdrop-filter: blur(6px) }

关于这几个属性的具体情况,请自行搜索资料复习。
这里我们选择box-reflect + filter:blur(…) 这个两个属性属性来完成这个效果。

我在容器插入一个视频来做Demo. 加入 box-reflect 之后效果如下:

好像感觉不对啊,直接翻转过来一个镜像。
莫慌!
box-reflect还有很多参数可以配置:[ above | below | right | left ] <length> <image>
这是一个简写配置,我怕你们看不明白,我写个例子:

.css-demo {-webkit-box-reflect: below -15px url('../img/mask.png') }

 

  • 第一个参数是 倒影的方向 (上,下,左,右)

  • 第二个参数是 距离实体元素的距离(可以是正负值,我这里用了负值)

  • 第三个是一个用于倒影的遮罩(很可惜这个遮罩不支持Muti-images 、定位、什么的)

为了让倒影更好看,这里用了一张 mask.png 的图片做遮罩,我们可以打开尘封在角落的Photoshop搞一搞。

然后链接上去,如果没有意外你会看到这个样子:

到这里,我相信有经验的人都知道我接下来要干嘛了。

那么接下来,我要就要开始模糊这个投影。

box-reflect是没有模糊的属性的。我本来尝试过把 用来 遮罩的 png 替换成 svg 并且在 svg 里面添加了模糊的 filter, 结果还是失败。 证明这个遮罩的图片,它就只能是一张代表alpha的图片(废话), 但是你不试试看,你怎么知道不行,对不对?

这个时候,就要祭出 iOS9/Safari9 之后新的一个私有属性 -webkit-backdrop-filter

然后思路就很简单了:

  • 容器不能Overflow : hidden

  • 创造一个伪类来套用背景模糊样式

.demo-view:after {
 display: block;
 content: ‘ ‘;
 width: 100%;
 height: 90px;
 position: absolute;
 left: 0;
 top: 100%;
 background-color: transparent;
 -webkit-backdrop-filter: blur(12px);
}

这样,就完了。核心CSS也就2句

  • -webkit-box-reflect: below -15px url(‘../img/mask.png’)

  • -webkit-backdrop-filter: blur(12px);

实际效果请看视频:

这里有几个问题要声明:

这效果兼容 :

  • mac OS 的Safari9 以上

  • iOS 9 以上

不兼容:

  • 任何平台的Chrome不支持

  • 任何平台的FireFox不支持

  • 任何平台的IE不支持

那么,这么多不兼容,这效果有什么意义?

这里我要说一下。

  • 任何人都有权利追求美好的事物

  • 拥有高端设备/系统的人有且必须有权力享受到更好的效果

  • iOS平台严格的审核制度/新系统高占比,放心用。

安卓?

Sorry 平台太乱我已无力。

题外话

站酷你们的编辑器有点老。我记得前两年就发过建议提供codepen这类代码展示接入。希望站酷越来越好。

关于转载

发表在站酷的文章目前不希望被转载, 但是有些人不打招呼就转的我只能问问我们公司法务部门意见了。




我叫Jay
目前就职上海沪江 UED部门 一个小前端,
平时没事喜欢写写文章,有兴趣的人去关注 《沪江UED》公众号,
这里有一群热爱设计,热爱分享的小伙伴
我在站酷上也偶尔发表文章(虽然距离上一次已经好几年),毕竟站酷的编辑器会过滤掉很多CSS对我造成一定的编写难度。

6
举报
|
9
分享
评论
用户头像
评论你的想法~
表情
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
卡通女孩与网页表格3D渲染
互联网,互联网插画,商务,数据,项目,合作,精准,投放,网页插画,插画,大数据,智能,商业,网页,网页设计,插画设计,互联,未来,交流,沟通,渐变
网页设计——纸杯蛋糕
卡通风格网页页面3D渲染
卡通风格网页页面3D渲染
户外旅行飞机情侣假日出行
卡通风格网页页面3D渲染
女生坐在网页面前办公矢量插画
卡通风格网页页面3D渲染
网页页面矢量插画
3D风格时尚电子商务设计元素
卡通女孩与网页表格3D渲染
三位美女围着网页看信息矢量插画
网页图标
网页背景
四个人物分别在上网贴纸合集
B19【星空诗意&网页幽灵按钮】公司产品服务简介汇报
互联网,互联网插画,商务,数据,项目,合作,网页插画,插画,大数据,智能,商业,网页,网页设计,插画设计,互联,未来,沟通,渐变,蓝色插画,商铺,覆盖,管理,项目管理,效率,提升,高效,关系,拓展,
男生和女生站在网页面前矢量扁平插画
卡通风格网页页面3D渲染
三个青年站在网页周边矢量插画
一个人拿着优惠券准备支付购物电商矢量插画
网页电商背景矢量插画
浏览电脑网页的元素
三个青年正在装修网页矢量插画
你可能喜欢
大家都在看
登录注册