svg 动画_根据AI导出的SVG path制作SVG线条动画

点击右上方红色按钮关注“web秀”,让你真正秀起来

前言

首先祝大家2019新年快乐,万事大吉,猪事顺利,阖家欢乐。

前面文章SVG 线条动画基础入门知识学习到了基础知识,现在来给大家讲讲如何制作SVG 制作复杂图形线条动画。

假如你有这样的一个gif,要用svg画出来,你能想到什么办法了?

303b8ee41010f9dcc21d389212779c1c.gif

上面这个 SVG 线条动画的路径 path ,如果自己手工一个点一个点定位调试画出来的话,估计你的累趴下(也不一定能搞定)。

下面我来告诉大家一个简单的方法,准备好工具。

1c457a41bea801fd6daeeb8c069b72ce.png

使用 PS 导出路径

导入图片

ab28413dde235e814d36280ac36ae1e8.png

用魔术棒or套索工具,选择区域

b4cfef4b7c0a0a73e7c46e2b1b64880a.png

右击-->建立工作路径-->容差2个像素吧(可以用不同大小的容差多试几次,直到得到一个自己满意的路径。)。

ca228a23b14098072d3ce1c169b34153.png

好,这个时候,路径算是建立完成了,可以把图层的透明度设置为 0 ,就能清晰的看到路径长啥样:

106f794eb2aa0022cb9b26a4566122ff.png

好,到了 PS 中的最后一步,点击 文件-->导出-->路径到 illustrator ,看图,照着操作就好:

252580db71976e09399ebb120be32b96.png

在 illustrator 中生成 SVG 文件

打开 AI ,打开刚刚用 PS 导出的 *.ai 文件。

可能你看到的是一片空白,别慌,使用ctrl+a全选,就能选中路径啦。

a967cea7990b3d15ee215d5da209c4cd.png

看到了吧,这上面有多少个点,太多,都不想数,所以手工画是不可能的啦。

OK,接下来就是调整画布大小,最好是路径左上角和画布左上角对齐,然后选中存储为 SVG 文件。

d189ee1d5161c609e91ded3488e220e6.png

好,其实吧 AI 也没做什么,路径是使用 PS 生成的,为什么不直接用 PS 生成 *.svg 文件呢?因为我用的版本 PS 还没支持直接存储为 SVG 格式。然后其实也可以直接在 AI 上绘制路径,这个就看设计师或者你对哪个工具更熟悉了。

获取 SVG 的 path 路径

把刚刚保存的 *.svg 路径的文件用浏览器打开,右键查看网页源代码:

ffe86664dff974976f5f4ee61f8de6ec.png

这里的path就是我们要的路径了

运用动画

.container {  width: 400px;  margin: 20px auto; }  .yy {  stroke-width: 5;  stroke: #f987ae;  animation: lineMove 13s ease-out infinite; }  @keyframes lineMove {  0% {  stroke-dasharray: 0, 4891;  }  50% {  stroke-dasharray: 4891, 4891;  fill: rgba(0, 0, 0, 0);  opacity: 1;  }  100% {  stroke-dasharray: 4891, 4891;  fill: rgba(249, 135, 174, 1);  opacity: 0;  } }

这里的stroke-dasharray长度,可以通过js来获取

var obj = document.querySelector("path"); var length = obj.getTotalLength();  console.log(length); // 4890.61669921875

是不是很简单了?赶紧自己试试吧。

公告

喜欢小编的点击关注,了解更多知识!

源码地址和源文件下载请点击下方“了解更多”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL提示Truncated incorrect DOUBLE value解决方法

“Truncated incorrect DOUBLE value”的解决方法主要是这两种: 1、修改了多个列的值而各列之间用逗号连接而不要用and 错误写法示例:update tablename set col1value1 and col2value2 where col3value3;正确写法示例:update ta…

一个完美的导航树

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml" ><head><title>无标题页</title><…

自定义python框架_Python web 框架Sanic 学习: 自定义 Exception

Sanic 是一个和类Flask 的基于Python3.5的web框架&#xff0c;它使用了 Python3 异步特性&#xff0c;有远超 flask 的性能。编写 RESTful API 的时候&#xff0c;我们会定义特定的异常错误类型&#xff0c;比如我定义的错误返回值格式为&#xff1a;{"error_code": …

文字水印

using System.Threading.Tasks;using System.IO;using System.Drawing; public static int Shuy(string Sname,string fname) { try { Image image Image.FromFile(fname); Graphics gra Graphics.FromImage(image); String text Sname; Font font new Font("宋体&quo…

读书笔记2013第3本:《无价》

《无价》这本书是过年前买的&#xff0c;网络书店上写着“老罗推荐”&#xff0c;想着好像是在老罗哪一年的演讲里听过这本书&#xff0c;在豆瓣上评分7.9。读书是为了产生行动&#xff0c;读书时要提的4个问题&#xff0c;1&#xff09;这本书主要在谈些什么&#xff1f;2&…

Linux下的程序调试——GDB

无论是多么优秀的程序员&#xff0c;都难以保证自己在编写代码时不会出现任何错误&#xff0c;因此调试是软件开发过程中的一个必不可少的 组成部分。当程序完成编译之后&#xff0c;它很可能无法正常运行&#xff0c;或者会彻底崩溃&#xff0c;或者不能实现预期的功能。此时如…

圆锥曲线万能弦长公式_2020高考数学50条秒杀型公式与方法

考试马上就要到了&#xff0c;学姐整理了高考数学50条秒杀型公式和方法&#xff0c;希望能帮助考生们更好地攻克数学难关&#xff01;高考数学秒杀公式与方法一1&#xff0c;适用条件&#xff1a;[直线过焦点]&#xff0c;必有ecosA(x-1)/(x1)&#xff0c;其中A为直线与焦点所在…

Python 内置模块之 logging

日志的级别和适用情况 级别适用情况DEBUG详细信息&#xff0c;通常只在诊断问题时对其感兴趣INFO确认工作正常WARNING表示发生了意料之外的事或者在不远的将来会有问题&#xff08;比如磁盘空间低&#xff09;。软件依然正常工作ERROR由于一个更加严重的问题&#xff0c;软件不…

Memory barrier

待续 Memory barrier,是一种屏障和一类指令&#xff0c;在执行这个屏障指令前后&#xff0c;CPU或者编译器在内存操作上强制一个约束序列。CPU使用性能优化器可以导致执行代码的无序。在单一线程执行中&#xff0c;重排序内存操作通常不会被注意。但是在并行编程或者设备驱动中…

数据结构与算法 Python语言描述 笔记

数据结构 线性表包括顺序表和链表&#xff0c;python的list是顺序表&#xff0c;链表一般在动态语言中不会使用。不过链表还是会出现在各种算法题中。 链表 link list 单链表 逆转链表&#xff1a; leetcode 206双链表循环单链表字符串 string 有一个重要的点就是字符串的匹配问…

Flask 跨域问题

一、什么是跨域 跨域是指&#xff1a;浏览器A从服务器B获取的静态资源&#xff0c;包括Html、Css、Js&#xff0c;然后在Js中通过Ajax访问C服务器的静态资源或请求。即&#xff1a;浏览器A从B服务器拿的资源&#xff0c;资源中想访问服务器C的资源。 同源策略是指&#xff1a;…

Hibernate 中配置属性详解(hibernate.properties)

转自&#xff1a;https://blog.csdn.net/shudaqi2010/article/details/70324843 Hibernate能在各种不同环境下工作而设计的, 因此存在着大量的配置参数。多数配置参数都 有比较直观的默认值, 并有随 Hibernate一同分发的配置样例hibernate.properties 来展示各种配置选项。 所需…

1.3 使用电脑测试MC20的电话语音功能

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…

前端之 AJAX

AJAX参数详细列表 参数名类型描述urlString(默认: 当前页地址) 发送请求的地址。typeString(默认: "GET") 请求方式 ("POST" 、 "GET")。注意&#xff1a;其它 HTTP 请求方法&#xff0c;如 PUT 和 DELETE &#xff0c;但仅部分浏览器支持。tim…

buffer 和cache的区别

Cache&#xff1a;高速缓存&#xff0c;是位于CPU与主内存间的一种容量较小但速度很高的存储器。 由于CPU的速度远高于主内存&#xff0c;CPU直接从内存中存取数据要等待一定时间周期&#xff0c;Cache中保存着CPU刚用过或循环使用的一部分数据&#xff0c;当CPU再次使用该部分…

html5--1.18 div元素与布局

1.18 div元素与布局 1.元素的分类2.div元素与布局 1、元素的分类 块元素:主要特征是会产生换行效果&#xff0c;自动与其他元素分离成两行&#xff1b;通常可以作为容器在内部添加其他元素。已经学过的块元素有&#xff1a; h1~h6;hr;ul;ol;p;table......... 内联元素:不会产生…

python读取excel表格太大怎么办_Python:使用Openpyxl读取大型Excel工作表

尝试对load_workbook()类使用read_only True属性,这会导致您获得的工作表为IterableWroksheet,这意味着您只能迭代它们,您不能直接使用列/行号来访问其中的单元格值.根据documentation,这将提供接近恒定的存储器消耗.此外,您不需要关闭文件,语句将为您处理.示例 –import open…

五个优秀的视频格式转换工具

电脑、手机、DVD播放机、PSP……这么多的东西都可以播放视频&#xff0c;但是视频格式又千差万别的&#xff0c;我们该怎么办&#xff1f;这里&#xff0c;我们介绍五个功能强大且易于使用的媒体转换器&#xff0c;用于转换不同类型的视频文件。 一、Super (Windows) Super是一…

前端之 HTML

HTML Web服务本质 import socketsk socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen(5)while True:conn, addr sk.accept()data conn.recv(8096)conn.send(b"HTTP/1.1 200 OK\r\n\r\n")conn.send(b"<h1>Hello world!</h1>&…

接入指南

接入概述 接入微信公众平台开发&#xff0c;开发者需要按照如下步骤完成&#xff1a; 1、填写服务器配置 2、验证服务器地址的有效性 3、依据接口文档实现业务逻辑 下面详细介绍这3个步骤。 第一步&#xff1a;填写服务器配置 登录微信公众平台官网后&#xff0c;在公众平台官网…