clip-path 直译过来就是裁剪路径,是使用SVG或形状定义一个HTML元素的可见区域的方法。
原理类似于Photoshop中的形状工具,通过设置一个封闭的路径实现一种遮罩效果,封闭路径内部的区域正常显示,外部的区域隐藏,从而在方形的图层上绘制出形状各异的几何图形。
而在clip-path中,封闭的路径可以来自于外部引入的SVG矢量图形和预定义的几种形状,但更常用的还是通过复数个带有二维定位坐标的点相连来生成。
如果给这些定位点的坐标配合上@keyframes
等制作动画,就可以制作出图片渐入渐出、路径动画、打字机、剪纸拼贴、几何变形等动画效果。
语法
url——SVG图形裁剪
/* 引用一个内联的 SVG 路径*/ clip-path: url(#c1); /* 引用一个外部的 SVG 路径*/ clip-path: url(path.svg#c1);
inset——矩形裁剪
clip-path: inset(top right bottom left round round-radius);
最后两个参数是用来设置裁剪后的圆角,可以省略。示例如下:
clip-path: inset(20px 20px 2px 2px round 20px);
circle——圆形裁剪
clip-path: circle(radius at center-position-left center-position-top);
radius半径可以省略,默认是方形的内切圆,at center-position圆心位置也可以省略,则圆心位于方形的中心。示例如下:
clip-path: circle(40% at 40% 50%);
ellipse——椭圆裁剪
clip-path: ellipse(radius-left radius-top at center-position-left center-position-top);
与圆形裁剪类似,区别是可以控制x轴半径和y轴半径。示例如下:
clip-path: ellipse(40% 30% at 40% 50%);
polygon——多边形裁剪
clip-path: polygon(point-position-left poingt-position-top,...);
这是最常用的裁剪方式,可以设置多个顶点形成多种多样的形状。
以元素左上角为零点,就可以确定每个顶点的坐标。由于定位点之间是顺序连接的,因此需要注意书写顺序。
需要注意的是,如果用来制作动画时,前后的定位点数量必须相同。
示例如下:
上图是使用clip-path 生成器生成的,界面如下,有很多预设,也可以自己手动调整定位点的数量和位置,调整好后直接在下方复制clip-path代码即可使用。
兼容性
这个属性的兼容性比较一般,IE和Edge完全不支持,Firefox部分较旧的版本也不支持,Chrome、Safari和Opera需要使用-webkit-前缀支持此属性。
圆形路径生成动画
为了更好控制圆形路径的生长,使用了6个定位点,第6个点位于圆心位置,具体代码如下:
.circle { height: 150px; width: 150px; border: 3px solid lightgreen; border-radius: 50%; transform: rotate(45deg); } .circle:hover { animation: round 3s linear infinite; } @keyframes round{ 0%{ clip-path: polygon( 0% 0%, 0% 0%, 0% 0%, 0% 0%, 0% 0%, 50% 50% ); } 25%{ clip-path: polygon( 0% 0%, 100% 0%, 100% 0%, 100% 0%, 100% 0%, 50% 50% ); } 50%{ clip-path: polygon( 0% 0%, 100% 0%, 100% 100%, 100% 100%, 100% 100%, 50% 50% ); } 75%{ clip-path: polygon( 0% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 100%, 50% 50% ); } 100%{ clip-path: polygon( 0% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 0%, 50% 50% ); } }
这是最近学习B站一键三连动画效果时碰到的技巧,本着挖了坑就得埋的精神额外找了些教程学习,整理完发现使用起来也很简单。
当你在一件事情上表现得犹豫不决时,
不妨问自己一个永恒的问题,
我还可以活多久呢?
——阿乙
评论
还没有任何评论,你来说两句吧!