解决SVG animation 在IE中不起作用
问题描述
CSS animation没办法解决SVG路径运动的问题,下图路径运动的过程,通过查资料发现所有的IE的版本都不支持SVG animation。在IE中没有水流动的效果。
主要代码
<style>
svg #water_path {
stroke-dasharray: 53, 200;
stroke-dashoffset: -180;
-webkit-animation: water 30s linear infinite;
-moz-animation: water 30s linear infinite;
-ms-animation: water 30s linear infinite;
-o-animation: water 30s linear infinite;
animation: water 30s linear infinite;
}
@keyframes water {
0% {
stroke-dashoffset: -200;
}
100% {
stroke-dashoffset: 1000;
}
}
@-ms-keyframes water {
0% {
stroke-dashoffset: -200;
}
100% {
stroke-dashoffset: 1000;
}
}
@-moz-keyframes water {
100% {
stroke-dashoffset: 1000;
}
}
@-webkit-keyframes water {
100% {
stroke-dashoffset: 1000;
}
}
@-o-keyframes water {
100% {
stroke-dashoffset: 1000;
}
}
</style>
<script type="text/javascript">
var element = document.getElementById("animpath");
var pathLength = element.getTotalLength();
element.style.strokeDashoffset = pathLength;
function animateRoute(e, len) {
len += 1;//每次偏移的位置
if (len >= 1000) {
//大于1000后重置初始偏移,重复运动
len = -200;
}
//设置元素偏移
element.style.strokeDashoffset = len;
//10毫秒执行一次
setTimeout(function () {
animateRoute(e, len);
}, 10);
}
animateRoute(element, pathLength);
</script>
<div class="svg-warp" style="background-color: #001020;height: 100%">
<svg class="home-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 800">
<path class="animate" id="animpath" fill="none" stroke="#F6B457" stroke-width="6"
stroke-dasharray="53, 200" stroke-linecap="round" d="
M595.87,381.5c3.75,75.25-102.441,73.5-104.667,8.917l0.097-16.092"/>
</svg>
</div>
stroke-miterlimi 不可以添加。stroke-width="6"的值要小于等于6.从网上查资料,有案例是大于6也可以运行,感觉可能是简单路径的原因,具体原因不是很清楚,效果代码如下,测试在IE中显示效果受到很多条件的限制,但是基本上可以运动起来了。案例代码
完整效果
涉及到TweenMax制作动画,后续把完整代码整理上传,先看下效果图
总结
写东西的时候总是想着要对读者负责,但是知识有限,能完成并写出来希望能跟大家一起学习进步,有错希望能得到指点,喜欢希望能收到点赞。
更新
在开发过程中发现var pathLength = element.getTotalLength();
只能应用于path路径
这里还有另外一种实现方法,应用于path line 等
案例代码
本文转载于:猿2048➦https://www.mk2048.com/blog/blog.php?id=haic2i00b2j
解决SVG animation 在IE中不起作用的更多相关文章
- 解决autocomplete=off在Chrome中不起作用的方法
大家都知道autocomplete属性是表单字段中的HTML5新属性,该属性有两种状态值,分别为"on" 和 "off",该属性可省略:省略属性值后默认值为&q ...
- 深入Animation,在SurfaceView中照样使用Android—Tween Animation!
第一类:Frame By Frame 帧动画( 不推荐游戏开发中使用) 所谓帧动画,就是顺序播放事先做好的图像,类似于放电影: 分析: 此种方式类似我之 ...
- 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)
安卓(android)建立项目时失败.出现AndroidManifest.xml file missing几种解决方法?(总结中) Eclipse新建项目.遇到这种问题.注意例如以下: 1.文件名称最 ...
- 解决getJdbcTemplate往oracle数据库中插入数据返回主键出错问题
我们使用Spring中的JdbcDaoSupport往Mysql中插入数据并返回主键代码,我们使用的mysql数据库,主键在数据库中设置为自增长:该类继承自JdbcDaoSupport,所以能直接使用 ...
- JavaScript解决select下拉框中的内容太长显示不全的问题
JavaScript解决select下拉框中的内容太长显示不全的问题 1.说明 有些情况下,select下拉框的内容过长,导致部分看不见: 现在通过鼠标事件,让下拉框中的内容显示完全 2.实现源码 & ...
- eclipse中的出现在打包一次后,后面新建的项目都出错了,出现support_v7下面出现红线及解决方法及为什么eclipse中项目继承ActionBarActivity解决方法一样
第一次写博客,有什么问题或者想法的希望各位可以进行评论交流,望大家多多包涵! 遇到的问题是在新建的项目都出错了,出现support_v7下面出现红线及解决方法及为什么eclipse中项目继承Actio ...
- 解决刷新页面vuex store中数据丢失的问题
**问题背景:**页面刷新后,vuex中的数据丢失.这是因为:js代码是运行在内存中的,代码运行时的所有变量.函数也都是保存在内存中的.进行刷新页面的操作,以前申请的内存被释放,重新加载脚本代码,变量 ...
- 解决命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)
解决命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?) 1.右击引用中的System.Web.MVC,点击“属性” 把"复制本地" ...
- 行业干货-如何逆向解决QT程序汉化中乱码问题
前言 “一款QT开发的国外软件,大概率是没有做中文支持的,所以你汉化中,不论怎么设置编码都一定是乱码.面对这个问题,你去互联网上找答案,答案却大多是复制粘贴的开发中解决乱码的文章,可是我们是要逆向中解 ...
随机推荐
- IntelliJ:JUnit单元测试
0.参考 在Intellij IDEA中添加JUnit单元测试 - 唐啊唐囧囧 - 博客园 1.引言 JUnit是Java中很出名的一个单元测试,关于JUnit的具体介绍,可以看之前写的编写JUnit ...
- QT:MYSQL driver not loaded解决方法
0.参考(按对本人帮助从高到低排列) Qt5.14.1 如何编译和使用mysql和mariadb数据库驱动 (15条消息) QMYSQL driver not loaded 的原理和解决办法_m158 ...
- zookeeper的JAVA API使用
1.创建连接 2.创建节点 3.监听信息 Watcher.class 4.获取节点 Stat stat = new Stat(); zk.getData(Path,true,stat); 5.修改节点 ...
- Kubernetes上安装Metrics-Server
操作场景 metrics-server 可实现 Kubernetes 的 Resource Metrics API(metrics.k8s.io),通过此 API 可以查询 Pod 与 Node 的部 ...
- tp 七牛云文件上传
1.先创建好七牛云账号和存储空间 申请七牛云账号: 创建七牛云存储空间: 在账号的秘钥管理里面创建秘钥 获取AccessKey / SecretKey: 2.集成PHP-SDK 七牛云开发文档:htt ...
- git常用命令及问题
Git基本操作 git init 创建新的git仓库 git clone [url] 使用 git clone 拷贝一个 Git 仓库到本地 git status 查看工作区 git stash li ...
- QQ聊天记录快速迁移
QQ聊天记录快速迁移 在工作中大家经常会用到QQ来沟通,但是很多时候在其它设备上登录QQ就无法查看到之前的聊天记录和图片,这是因为电脑上的QQ聊天记录一般都是保存在电脑本地硬盘里,所以我们在换设备登录 ...
- ospf应用简单
ospf应用简单 OSPF (SPF) 属于链路状态路由选择协议,并且是公有标准, 理论上是没有网络规模限制的: 支持网络的层次化设计,可以将网络分为2层. 层,是通过"区域" ...
- Nebula Graph 在企查查的应用
本文首发于 Nebula Graph Community 公众号 背景 企查查是企查查科技有限公司旗下的一款企业信用查询工具,旨在为用户提供快速查询企业工商信息.法院判决信息.关联企业信息.法律诉讼. ...
- python 关于heapq模块的随笔
heapq模块提供了很多高级功能可以通过help(heapq)查看详细文档: 要点: 1优先级队列让我们可以按照重要程度来处理元素,而不是先进先出 2使用heapq可以应对长列表,因为heap不是复杂 ...