前端人如何用clip-path画画....甚至做动画?

写在前面

clip-path即剪切路径,是css3中的新属性之一,clip-path属性使用裁剪方式创建元素的可显示区域。区域内的部分显示,区域外的隐藏。

说人话就是它可以让方方正正的一个div盒子变成一个个性质可DIY的图形(三角形,正方形,甚至不规则图形)

三角,正方与不规则

不过令人可惜的是,至今clip-path也依然没有广泛应用,且网络社区上的辅助工具也非常少


寥寥无几的clip-path制作器之一

不过,为了用clip-path完成画画和动画两个需求,我特地制作了一个easy-animation

easy-animation

方便各位进行clip-path绘图与动画制作。具体我们下文介绍,顺便为了勾起各位的兴趣,这里特地放出基于clip-path的碎片轮播:
示例

part1 clip-path如何绘图?

让我们来看一个小小的例子:
css部分:

    .ele-0{
      width:800px;
      height:400px;
      background: black;
      clip-path: polygon(35.00% 29.75%,21.00% 71.75%,63.38% 36.25%)
    }

html部分

<div class="ele-0"></div>
由三个点构成的三角形

这里用百分比作为单位,真实值计算以元素宽高为基准进行,具体看下方计算
比如

35.00%*800 =280px
29.75%*400=119px

那么第一个点的坐标就是(280px,119px)了

你或许会问,为什么用百分比而不是px作为单位?如果用px,这个图形的大小就永久固定了!意味着,你不能随便更改宽高比比例来进行缩放这里是2:1,所以,如果你设置width=400px,height=200px,就可以得到小一号的三角形了。

相邻点之间连线且最后一个点与第一个点想连,构成了封闭图形,clip-path想画任意图形基本就是这个原理。

part2 clip-path制作动画?

只要两个 clip-path,其中包含的点个数相同,在animation的帧内部就可以线性切换了!
在上直接体验:
codepen:https://codepen.io/a1163675107/pen/mdrypVV

    .ele-0{
       width:800px;
       height:400px;
       position: absolute;
       background: black;
       animation: move-0 1s linear infinite;
     }
    @keyframes move-0 {
          0%{
          clip-path: polygon(35.00% 29.75%,21.00% 71.75%,63.38% 36.25%,35.13% 30.00%)
         }
          100%{
          clip-path: polygon(82.88% 21.25%,65.25% 70.00%,86.88% 63.25%,83.00% 21.00%)
         }
       }

基于clip-path的线性变换

看到了吗?在@keyframes内部0%与100%的clip-path中点的数量是相同的,如果不同,则没有动画效果!

part3 easy-animation 基于clip-path动画的开源项目

github地址:https://github.com/moushicheng/easy-animation
在线使用:https://moushicheng.github.io/easy-animation/

一句话简介

前端的帧动画制作器,作为用户的你可以直接绘制多个帧,然后点击导出(import),就可以获得相应的css代码

帧的概念

现代动画成形的原理就是视觉暂留,一个时长为1s的动画通常是由多个画面组成(动漫中常常是是24帧/s),每个画面就是一,在easy-animation中,你只需要绘制一些关键帧,程序就能自动补帧,完成动画。
PS:补帧:自动补齐中间缺失的帧,来填补画面,比如上面只画了两幅三角形,但是中间三角形的变换已经被补帧了
[warning]每一帧的画面必须是封闭的图形。

如何使用?

以一次绘制动画的过程为例。
gif演示:


绘制过程.gif

时间轴中:

左下角的加号:

是用于添加新的轨道


添加新轨道

新的轨道意味着你能画更多移动的对象了。

cur:Number

代表你在当前轨道中选择的帧(以点击来切换),图中:cur:1,你在绘图区画的图像就是第二帧(众所周知程序员从0开始数数)

右边轨道的加号

是用于在对应轨道中添加新的帧


添加新帧

常见情况1:

当前cur:0,0帧你已经画好封闭图形了,这时候你想画第二个图形,这时候如果你不添加新帧,或者不切换cur:1,则无法绘制新的图形,现象就是:无论你如何点击画面都画不了新的点。如下方gif
![pop4.gif](https://upload-images.jianshu.io/upload_images/23336154-0a7981012f

工具栏:

工具栏

从上到下分别是:

选择

目前主要是用于拖动插入的图片。未来将会有更多功能 待更新.......
PS:钢笔状态下也可以拖动图片,但是当你把图片移动到绘图层(灰色框框 默认800x400 px)因为绘图层在图片层之上,这时候你就得通过选择工具拖动图片了

钢笔

在绘图层中以点击的方式绘制剪切画面。

撤回

撤回上一个绘制的点

前进

返回上一个你不小心撤回的点

插入图片

插入后的图片可放大,缩小,调整尺寸
主要用于用户在图片上方描点,像ps那样

预览动画

点击后可观看你绘制的动画。

导出css代码

导出一串css代码,附带clip-path剪切路径,你可以直接在你的网站上

调整画布尺寸

其实最重要的是调整一个合适的宽高比,因为在前文说过了clip-path中使用%作为单位的作用。

part4 看看利用clip-path的优秀作品?

分页栏,注意数字之间的切换:
codepen:https://codepen.io/ainalem/pen/BaNzPLr

分页栏

碎片轮播:(打个小广告不过分把)
简书:https://www.jianshu.com/p/d1b1812a255b
示例

Olympics 2020
codepen:https://codepen.io/ainalem/pen/ExYNYGp

Olympics 2020

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容