css 一侧是三角形的矩形_css揭秘-视觉效果

本文详细探讨了如何使用CSS实现单侧投影、不规则投影、染色效果、毛玻璃效果和折角效果。通过巧妙运用box-shadow、filter、drop-shadow滤镜和混合模式,解决了在不同场景下的视觉需求。例如,利用扩张半径实现单侧投影,通过滤镜组合实现图片染色效果,以及借助模糊滤镜创造毛玻璃质感。
摘要由CSDN通过智能技术生成

646a4053461606f0064b323517dff908.png

单侧投影

难题

box-shadow 如何在元素的一侧(偶尔是两侧)设置投影。

单侧投影

大多数人使用 box-shadow 的方法是,指定三个长度值和一个颜色值:

box-shadow: 2px 3px 4px rgba(0,0,0,.5);

box-shadow 的绘制原理:

  1. 以该元素相同的尺寸和位置,画一个 rgba(0,0,0,.5) 的矩形;
  2. 把它向右移 2px,向下移 3px;
  3. 使用模糊算法将它进行 4px 的模糊处理;
  4. 将模糊后的矩形与原始元素的交集部分会被切除掉。

c80ca7673a7619c28e841cb143a42ada.png

使用 4px 的模糊半径意味着投影的尺寸会比元素本身的尺寸大约 8px ,因此投影的最外圈会从元素的四面向外显露出来,只需改变偏移量,就可以把投影的顶部和左侧隐藏起来,只要这两个方向上的偏移量不小于4px 就可以了。但是,这在某种程度上会导致外露的投影太过浓重,看起来不是很美观。另外,就算这个问题勉强可以接受,但跟想要的投影在单侧的不相符。

最终的解决方案来自 box-shadow 的第四个长度参数,排在模糊半径参数的后面,称作扩张半径。这个参数会根据指定的值去扩大(当指定值为负数)缩小投影的尺寸。举例来说:一个 -5px 的扩张半径会把投影的宽度和高度各减少 10px。因此,下面代码即为想要的效果:

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

c273222b7e5fc7e2d861619a65184ae3.png
下右上左投影的矩形

邻边投影

box-shadow: 2px 3px 4px rgba(0,0,0,.5);
box-shadow: 3px 3px 6px -3px black;

6315e589e9adf6d997103cad42678f2b.png
两种邻边投影以及双侧投影

双侧投影

因为扩张半径在四个方向上的作用是相等的(即无法指定投影在水平方向上放大,而在垂直方向上缩小),唯一的办法是用两块投影(每边各一块)来达到目的。

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

不规则投影

难题

给一个矩形或者其他能用 border-radius 生成的形状加投影时,box-shadow 的表现都堪称完美。但是当元素添加了一些伪元素或者半透明的装饰后,box-shadow 就有点力不从心了。这类情

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值