CSS视觉效果


title: CSS视觉效果
date: 2016-12-17
tags: CSS Secrets


0x00 投影的绘画机制

当为一个元素添加 box-shadow 时,我们便会从视觉上得到一个投影的效果。

比如:

#box{
    width: 100px;
    height: 100px;
    background: deeppink;
    box-shadow: 5px 6px 4px rgba(0,0,0,0.5);
}

box-shadow

我们对 div#box 添加了 box-shadow 属性,并指定了三个长度值和一个颜色值。对于这样的用法,我们再熟悉不过了。要得到上图的效果,浏览器渲染引擎其实进行了四步:

  1. 以该元素相同的位置和尺寸,画一个 rgba(0,0,0,0.5) 的矩形。

  2. 把它向右偏移 5px,向下偏移 6px

  3. 使用高斯模糊算法对其进行 4px 的模糊处理。

  4. 模糊后的矩形与原始元素的交集部分会被裁切掉。

box-shaow的绘制原理

所以,从投影绘制的机制来看,绘制的投影其实是在元素的上层的。


单侧投影

box-shadow 鲜为人知的第四个参数,称为 _扩张半径_。这个参数会根据指定的值去扩大(当指定负值时)或缩小投影的尺寸。比如,一个 -5px 的扩张半径会把投影的宽度和高度各减少 10px (即每边各 5px)。

那么,当应用一个负的扩张半径,而它的值刚好等于模糊半径,那么投影的尺寸就会与投影所属元素的尺寸一致,如果不使用偏移参数来移动它,将看不见任何投影。

这正是我们想要的。

box-shadow: 0px 5px 4px -4px black;

我们给了投影一个正的垂直偏移量,而在另外三侧是没有投影的。

单侧投影


双侧投影

目前为止,还无法指定投影在水平方向上放大,而在垂直方向上缩小,要实现双侧投影的效果唯一的办法就是使用两块投影来达到目的。

box-shadow: 6px 0px 5px -4px yellow,
            -6px 0px 5px -4px green;

双侧投影

未完待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值