前段时间朋友介绍了一个很帅的网站 www.species-in-pieces.com/

F12看了一下 Dom 结构,发现作者只是结合了 CSS3 的 clip-path 和 transition 特性,就实现了很厉害的效果,每个转场和动物的细节都做得很棒。

然后我根据自己的理解做了一个Demo, 并将核心js部分打包了出来,欢迎感兴趣的朋友一起交流

Demo for ani-clipath

Demo中的图片来自 www.behance.net/tomanders, 我只是做了低边处理

预览地址: luosijie.github.io/ani-clipath…

源码地址: github.com/luosijie/an…

实现过程

先从一个简单的 clip-path 变形开始

clip-path 动画
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width"><title>simple move</title><style>.polygon{width: 600px;height: 300px;background-color: black;clip-path: polygon(20% 30%, 0 70%, 40% 70%);animation: move 1s infinite alternate;}@keyframes move {to {background-color: grey;clip-path: polygon(80% 70%, 100% 30%, 60% 30%);}}</style>
</head>
<body><div class="polygon"></div>
</body>
</html>复制代码

这就是Demo中所需要的基本动画 变形 + 变色, 至于如何构建精美的图形变化, 就需要一点想象力和设计能力了

设计

我们需要先设计出满意的低边图案,注意控制三角形的数量,越少越好越少越好越少越好越少越好越少越好越少越好

shark
shark
shark

接下来,需要将每个三角形的坐标和色值转化为数据格式。我目前找不到很高效的转化方式,就用标注软件标注完后,手工录入,最后画了3个就结束了。所以三角形的数量越少越好越少越好越少越好越少越好越少越好越少越好。

或者你有很好的方式介绍,请一定要告诉我。

图形转为数据

现在准备工作完成了,最痛苦的阶段也已经过去了

码起

代码实现的基本思路是这样的

  1. 每个动物都是由 36 个不同颜色的三角形拼接而成, 所以需要 36 个 div 来显示
  2. 每一次变化都将 36 个div 的 clip-path 属性重新赋值
  3. 每个 div 都设置 transition 属性, 让转场自动实现

区区几行代码就不贴出来了,感兴趣的移步 github

不过我想介绍一下封装好的插件的使用方法

安装

CDN

<script src="https://unpkg.com/ani-clipath/dist/ani-clipath.min.js">复制代码

NPM

npm install --save ani-clipath复制代码

使用

需要自定义一个 DOM 容器,并设置好widthheight

<style>.shapes{width: 800px;height: 600px;}
</style>
...
<div class="shapes"></div>复制代码

初始化一个实例,并传入参数

参数 类型 说明
el String 绑定DOM容器
speed Number 控制变化速度
delay Number 控制变化的延迟
shapes Array 低边图形的坐标

使用公共方法切换

方法 说明
next() 切换下一个图形
previous() 切换上一个图形
<script>var aniClipath = new AniClipath({el: '.shapes',speed: 1000,delay: 30,shapes: data})setInterval(function(){aniClipath.next()},3000)
</script>复制代码

shapes 属性的数据格式

var data = [第 1 个低边图形[// 基本图形参数{ // 颜色c: '#1A1A1A',// polygon坐标p: [ { x: '50%', y: '30%' }, { x: '30%', y: '70%' }, { x: '70%', y: '70%' }]}...],第 2 个低边图形[{c: '#E6E6E6',p: [ { x: '50%', y: '70%' }, { x: '30%', y: '30%' }, { x: '70%', y: '30%' }]}...]...第 n 个低边图形
]复制代码

先这样了 欢迎star

有意思的clip-path相关推荐

  1. c语言clip函数,深入理解裁剪(clip)

    裁剪 canvas中有一个功能是裁剪,通过裁剪功能,可以实现裁剪区域.裁剪区域是canvas中由路径(可以称之为裁剪路径)所定义的一块区域,所有的绘图操作都限制在本区域内,区域之外的绘制效果会被忽略. ...

  2. CLIP论文阅读【Learning Transferable Visual Models From Natural Language Supervision】

    文章目录 1. 前置知识 2. 动机(Motivation) 3. 引言 (Introduction) 4. 方法 (Method) 5. 一些有意思的Clip相关工作 参考文献 paper: htt ...

  3. 360 css grid,【第2210期】使用 CSS 创造艺术

    原标题:[第2210期]使用 CSS 创造艺术 前言 周末愉快.今日前端早读课文章由虾皮@SbCoco投稿, 公号:iCSS前端趣闻分享. 想写一篇关于 CSS 创造艺术的文章已久,本文主要介绍如何借 ...

  4. Bitmap image and image mask

    About Bitmap Images and Image Masks   bitmap image是一系列的像素,这些像素中的每一个代表了图片中的一个点.bitmap image可以是JPEG TI ...

  5. CSS的clip-path

    摘要:在Web网页中主要是以矩形分布的.而平面媒体则倾向于更多不同的形状.造成这种差异的原因是因为缺少合适的工具去实现我们平面媒体中的内容.这也就造成了很多设计师的创意发挥,就算是有创意,前端实现也将 ...

  6. android 图片圆角 遮罩_Android 自定义View练手Demo(一)实现圆角遮罩效果

    Android 自定义View系列文章 Android自定义View实现圆角遮罩效果 一图胜千言,有一个遮罩就会凸显出重点区域 1-1.jpg 本文通过两种方式来实现这种效果,来达到自定义View练手 ...

  7. 裁剪(Clipping)-Window GDI

    裁剪(Clipping)-Window GDI http://blog.csdn.net/windcsn/article/details/492105 裁剪是在一个应用程序的窗口中限制输出区域或路径的 ...

  8. android开发控件水波纹,Android实现水波纹控件的方法

    有很多app使用过水波纹的这样的效果,看着很酷酷的样子,所以自己就撸码写了一个. 实现思路: 利用贝塞尔曲线绘制圆弧(也就是水波的波纹) 通过动画改变绘制的起始点使水波纹平移 首先,定义我们需要的自定 ...

  9. 用css3实现ps蒙版效果+动画

    说实话,css3越来越强大,使用css也可以做越来越多意想不到的效果. 今天,见到有人用css3实现了ps的蒙版效果,如下所示: 实现原理 这个动画,其实也并不复杂.它使用background-cli ...

  10. element-ui表单_每日UI挑战强加-登录表单(分步教程)

    element-ui表单 A step by step journey to create a good design from the daily UI challenge 一步步走,从日常的UI挑 ...

最新文章

  1. 比特币现金可能成为市值第四大最大的加密货币
  2. JSP/Servlet 工作原理
  3. 下载软件一直转圈圈_来了来了,百度网盘不限速!亲测满速,支持免登录下载!...
  4. C#实现RTP数据包传输
  5. 访问网络共享时出现“拒绝访问”
  6. MyBatis框架 多表联合查询实现
  7. 全站仪坐标计算机公式,全站仪使用方法及坐标计算讲解
  8. php打开retmsg,PHP截取发动短信内容的方法
  9. 解决git clone出现“error: RPC failed; result= 18,HTTP code = 20018. 00 KiB/s”报错的五个网址(个人用)
  10. 基于单片机的无线防盗报警系统设计(#0449)
  11. windows系统快捷调出任务管理器
  12. 20210719-t101-对称二叉树
  13. win10+vs2017配置mpi环境的记录(已成功)
  14. mac 设置终端快捷命令
  15. c语言中的二目运算符,C语言中的三目运算符是什么
  16. UDA代码解析(2)models
  17. 省份展开html5 实现,javascript html5 canvas实现可拖动省份的中国地图
  18. 有没有这样一个冷笑话,突然把你萌翻了~~~
  19. 人体最适宜的温度和湿度
  20. 插件介绍: DataTables 表格分页

热门文章

  1. jquery水平垂直居中_Java Web应用程序集成的jQuery UI选项卡(水平和垂直)示例
  2. 关于Firefox插件
  3. JS -- http、https地址自动检测并添加为链接
  4. IJCAI最佳论文公布 华人斩获最佳学生论文奖!
  5. 提高 Linux 开发效率的 5 个工具
  6. ubuntu vnc安装
  7. Django学习系列之ModelForm
  8. WP8开发日志(3):MVC设计模式进阶——绑定多个数据集
  9. 设置组策略的应用条件-----Windows 管理规范 (WMI)过虑器
  10. 【同124】LeetCode 543. Diameter of Binary Tree