问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

动态svg格式动图如何转成动态 gif 格式动图?

发布网友 发布时间:2022-04-24 18:45

我来回答

2个回答

懂视网 时间:2022-05-12 04:24

本章给大家介绍在html5中如何用SVG制作酷炫动态图标?(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、基本图形元素

  svg有一些预定义的形状元素:矩形<rect>,圆形<circle>,椭圆<ellipse>,直线<line>,折线<polyline>,多边形<polygon>,路径<path>和文本<text>。

<!-- viewBox定义画布大小 width/height定义实际大小 -->
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="300" height="300" viewBox="0 0 300 300">

 <!-- 直线 (x1,y1)与(x2,y2)为两点坐标 -->
 <line x1="0" y1="0" x2="250" y2="30" />

 <!-- 多边形 通过多个点的坐标形成封闭图形 -->
 <polygon points="5,5 100,100 50,200" />

 <!-- 矩形 (x,y)为左上角起始点 -->
 <rect x="100" y="100" width="120" height="100" />

 <!-- 圆形 (cx,cy)圆心点 r半径 -->
 <circle cx="100" cy="50" r="40" stroke="black"/>

 <!-- 文本 (x,y)左下角坐标 -->
 <text x="0" y="20" style="font-size:16px;font-weight: bold">Try SVG</text>

</svg>

二、样式与效果

svg元素的样式可以写成标签的属性,也可以写在style里面。下面是一些主要的样式属性:

stroke: 笔触颜色
stroke-width:笔触宽度
stroke-opacity:笔触的透明度
fill:填充色,即background
fill-opacity:填充色的透明度
transform:图形变换,类似css3 transform

svg还支持很多滤镜效果,能做渐变、阴影、模糊、图像混合等等。不需要了解那么多,例如要画几个彩色圆圈,用circle 配合fill 即可。

注意:transform 默认以svg左上角为基点,而不是圆心或其他中心。左上角是svg坐标系原点。了解transform和坐标系统,可以参考 这里。

三、辅助元素

svg有几个辅助元素:<g> <defs> <symbol> <use>。它们不代表具体形状,而是帮助进行图形元素的分组管理、重复使用等。具体介绍可以参考 这里。

<g> 元素通常用来对相关图形元素进行分组,以便统一操作,比如旋转,缩放或者添加相关样式等。
<use> 实现SVG现有图形的重用,可以重用单个SVG图形元素,也可以重用<g><defs>定义的组元素。
<defs> 内部定义的元素不会直接显示,可以不用事先定义样式,而是在使用<use>实例化的时候再定义。
<symbol> 能够创建自己的视窗,兼具<g>的分组功能和<defs>初始不可见的特性。

对于上面提到的transform基点问题,可以通过嵌套<g>标签并偏移<g>的位置,进而重设基点。如下画出几个水平排列的圆圈,并设置不同的缩放尺寸

<svg width="80px" height="80px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
 <g transform="translate(20 50)">
 <circle cx="0" cy="0" r="7" fill="#e15b64" transform="scale(0.99275 0.99275)" />
 </g>
 <g transform="translate(40 50)">
 <circle cx="0" cy="0" r="7" fill="#f47e60" transform="scale(0.773605 0.773605)" />
 </g>
 <g transform="translate(60 50)">
 <circle cx="0" cy="0" r="7" fill="#f8b26a" transform="scale(0.42525 0.42525)" />
 </g>
 <g transform="translate(80 50)">
 <circle cx="0" cy="0" r="7" fill="#abbd81" transform="scale(0.113418 0.113418)" />
 </g>
</svg>

四、动画的实现

svg的动画效果是基于动画标签元素实现的:

  <animate>实现单属性的过渡效果;
 <animateTransform>实现transform变换动画效果;
 <animateMotion>实现路径动画效果。

svg的写法很灵活,样式可以写成标签属性也可以写在style里面,动画标签可以通过xlink指定元素,也可以写在动画元素的内部。如下演示animateTransform的xlink写法:

<svg xmlns="http://www.w3.org/2000/svg">
 <rect id="animateObject" x="20" y="20" width="50" height="50" fill="blue"></rect>
 <animateTransform
 xlink:href="#animateObject" <!-- 指定动画元素 -->
 attributeName="transform" <!-- 需要动画的属性名称 -->
 type="scale" <!-- 指定transform属性 -->
 begin="0s" <!-- 开始时间,即延迟 -->
 dur="3s" <!-- 动画时间 -->
 from="1" <!-- 开始值 -->
 to="2" <!-- 结束值 -->
 repeatCount="indefinite" <!-- 重复方式,indefinite无限重复 -->
 />
</svg>

上例的动画是A到B的过渡,要形成顺畅的循环,至少要定义三个关键点。animateTransform支持更多更灵活的属性设置:

values:多个关键点的值,替代from和to,例如 values="0;1;0"

keyTimes:跟values对应,各个点的时间点

calcMode:动画快慢方式。discrete | linear | paced | spline

keySplines:设置运动的贝塞尔控制点,calcMode为spline时有效

五、代码实例

circle画圆,fill着色,用g标签包裹并定位,transform设置初始形变,animateTransform设置动画。现在来看代码,相信不会再是一头雾水了:

<svg class="lds-message" width="80px" height="80px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
 <g transform="translate(20 50)">
 <circle cx="0" cy="0" r="7" fill="#e15b64" transform="scale(0.99275 0.99275)">
  <animateTransform attributeName="transform" type="scale" begin="-0.375s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform>
 </circle>
 </g>
 <g transform="translate(40 50)">
 <circle cx="0" cy="0" r="7" fill="#f47e60" transform="scale(0.773605 0.773605)">
  <animateTransform attributeName="transform" type="scale" begin="-0.25s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform>
 </circle>
 </g>
 <g transform="translate(60 50)">
 <circle cx="0" cy="0" r="7" fill="#f8b26a" transform="scale(0.42525 0.42525)">
  <animateTransform attributeName="transform" type="scale" begin="-0.125s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform>
 </circle>
 </g>
 <g transform="translate(80 50)">
 <circle cx="0" cy="0" r="7" fill="#abbd81" transform="scale(0.113418 0.113418)">
  <animateTransform attributeName="transform" type="scale" begin="0s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform>
 </circle>
 </g>
</svg>

效果图:

8.jpg

也可以用js控制svg的属性,控制svg的动画过程,做成能响应点击等事件的图标按钮。

热心网友 时间:2022-05-12 01:32

SVG格式的动画是可以交互的,不过也得基于浏览器的支持,比如现在很多品牌特别喜欢在公众号做SVG动画,就是因为微信公众号支持,可是我们却不能像图片那样保存。

因为,SVG不是传统意义上的图片格式,如果是静图(jpg、png等)、动图(gif、webp等)是可以保存下来的。

SVG这种图形文件,严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的Web图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器来观看。

底层是代码,所以要变成gif图片的话,就只能录制成视频然后转成gif就好了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
易企秀如何分享链接给微信好友?-易企秀分享链接给微信好友的方法 华为荣耀3c系统辅助功能服务老是自动关闭,求解决方案。 我用一键清理忽... 华为荣耀3c手机双击唤醒屏幕不好用了怎么办? 荣耀手机刷机包从哪下 木地板为啥走过会响 瓷砖块要斜成几度角人踩上去不会烂 刚出生的婴儿肚子胀怎么办 新生儿涨肚子按摩图 刚生小宝宝胀气怎么办 白果怎么炒好吃 白果可以制作哪些美食 飞效自动拉钉机有哪些作用和用途? 拉钉机作业时出现问题故障该怎么处理呢? 飞效自动拉钉机怎么样?看到很多电脑机箱厂家都在用 自动拉钉机好不好,拉钉速度快吗? 自动拉钉机设备的使用时需要注意些什么? 请问一下拉钉机工作原理是啥吗? 飞效自动拉铆钉机,有哪些型号? Webp动图怎样转化成GIF动图??? 自动拉钉机能实现无人化拉铆吗?它的优势在哪里? 请问,用什么图片软件可以打开webp格式的图片? 小学二年级的学生在教室开展第二课堂,举行什么活动较好? 温馨教室黑板报的内容! 小学生二年级教室墙壁上应该贴什么样的板报 小学二年级班级板报主题设计 新学期到了,黑板报资料 诺姆四达集团的客户见证 你到广东京信电力南海发电一厂了吗?那边待遇怎么样?工作环境好不好,我也是热控的,打算去看看 大业信托有限责任公司怎么样? 南海发电厂(京西电力集团)普通员工待遇怎么样,有发展前景吗? 广州国电京信电力投资有限公司怎么样? 听说有款POP的全自动拉铆钉机大概需要多少钱一台呀? 本人想采购一台自动拉铆钉的机器,适用于生产流水线上的,有推荐的品牌吗? 有谁了解飞效自动拉钉机效率怎么样? Szent100拉铆钉机的主要技术参数是多少? 深圳哪家的自动上料拉钉机稳定性好? 兰州金港城医院怎么样? 西红柿是什么立体图形? 兰州金港城医院是二甲医院吗? 求 用符号拼出西红柿的图案 兰州金港城医院那边的邮编是多少? 剪纸艺术中,柿子的图案一般用来表达? 兰州金港城医院肝病科地址在哪?爸爸酒精肝,昨天又喝的晕晕乎乎的,今天早上看着白眼球有点泛黄,想带他 看图猜成语,图案是一只鸡和一个西红柿,上面&#x374D;着,一万个? 自己种植的番茄商品性很差,这是管理出现了哪些纰漏? 兰州零距离电话 油画柿子寓意? 本人每隔一段时间,就会感觉到头疼,现在在兰州。想问一下兰州哪家医院对于这种病治旳好? 西红柿果实顶部凹陷是什么原因? 图案有西红柿的游戏叫什么名字 兰州金港城喉科医院能刷医保卡吗?