web前台入门到实战:CSS没有边界的裁剪路径 – Clip Paths

作者 : 开心源码 本文共1680个字,预计阅读时间需要5分钟 发布时间: 2022-05-13 共186人阅读

在深入研究之前,我们应该先看看基本的形状和clip-path。裁剪路径可以将CSS Shapes如circle()、ellipse(), inset()或者自由变化的polygon()应用于任何元素。元素中不在形状边界内的任何内容都将被裁剪删除掉。

使用多边形函数,我们可以创立三角形、星形或者其余形状,尽管在可以使用px等固定单位,但百分比将提供更大的灵活性并自适应于元素的尺寸。

所以对于一个八边形,我们可以设置八组x,y点坐标来定义。在这种情况下,对于第一个x,我们从盒子宽度的30%开始,对于y,我们从盒子的顶部开始,而后顺时针设置各个点。可见区域就是通过将这些点用直线连接而形成的形状。

学习Q-q-u-n: 731771211,分享学习方法和需要注意的小细节,不停升级最新的教程和学习技巧(从零基础开始到前台项目实战教程,学习工具,全栈开发学习路线以及规划)clip-path: polygon(  30% 0%,  70% 0%,  100% 30%,  100% 70%,  70% 100%,  30% 100%,  0% 70%,  0% 30%);

看不见的顶点

上面实现一个八边形,我们设置了八个点的坐标。但是,我们可以跳出元素框的限制去思考,也就是说要跳出0% – 100%的这个范围。

元素的盒边框是裁剪后内容的显示边界,但我们依然可以为元素定义超出盒边框的点。

通过定义超过0%-100%范围的点,我们可以把一个有三个点的多边形变成四边形、五边形或者六边形。在这个例子中,都是定义clip-path: polygon()函数的三个点,但是因为超出了元素框的边界,我们可以看到一个三角形和两个五边形。

于是,上面的八边形只用四个点即可以实现。

一条裁剪路径,多个形状

我们可以利用超出元素边界的这种能力用一个polygon()创立多个裁剪形状。

根据元素的位置,我们可以直接制作出每个形状,但是由于我们知道裁剪坐标点可以在元素框之外的空间中移动,所以可以绘制额外的线来帮助我们找到下一个点的位置。

它还可以帮助我们分割元素。结合CSS自己设置属性,我们可以解决重叠的元素,并将每个元素裁剪成交替的条带。下面的例子是两个重叠的圆角矩形,每个被分成不规则的矩形动画。

不同的填充规则不同的形状

polygon()函数不仅仅是一组坐标点的集合,它还有另外的一个参数 — [填充规则] ,我们一直使用的默认值是nonzero,它还有另外一个值是evenodd,这两个值它们确定形状的内部和外部的规则是不同的。

当使用evenodd规则时,我们可以通过从任意的点绘制光线来确定点是在边界内还是在边界外。假如光线穿过裁剪路径线的和为偶数,则该点被视为外部,假如光线穿过裁剪路径线的和为奇数,则该点位于内部。

顺序

要注意的是,有许多CSS属性例如CSS Filters, Blend Modes等都会影响元素的外观。而这些效果会按下面的顺序应用到元素上:

  1. CSS Filters (例如 filter: blur(2px))
  2. Clipping (本文所讲的)
  3. Masking (相似与裁剪)
  4. Blend Modes (例如 mix-blend-mode: multiply)
  5. Opacity

假如我们需要一个模糊的星星形状,模糊效果会发生在裁剪之前。因为模糊效果会参照元素的边框,但是我们将元素边框裁剪掉了,于是前一个星星的模糊效果会丢失。

假如我们想模糊星星,可以选择将剪裁后的元素包裹在模糊的父元素中。内部元素将首先呈现其星星的形状,而后父元素将正常模糊其内容。

通过动画来显示内容

CSS Shapes是可以增加动画效果的,它允许我们在不影响元素内容的情况下改变元素的可视区域。例如,我们可以从内容隐藏(完全裁剪)开始,并增大裁剪路径以显示其中的内容。要注意的是,clip-path: polygon()动画形的一个重要条件是每个关键帧的坐标点数以及填充规则都必需相同。否则,浏览器将没有足够的信息来插入中间值。

总结

Clip paths给我们提供了少量新的有趣的可能,同时clip-path属性并不会改变元素本身的尺寸和布局,这也是它强大的地方,我们可以大量的使用这个属性来改变元素的外观。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » web前台入门到实战:CSS没有边界的裁剪路径 – Clip Paths

发表回复