css animation配合SVG制作能量流动效果


Posted in HTML / CSS onMarch 24, 2021

最终效果如下:

css animation配合SVG制作能量流动效果

动画分成两步

  • 制定运行轨迹
  • 创建DOM并按照轨迹动画

制定运行轨迹

我们先要画一条底部的淡蓝色半透明路劲做为能量流动的管道
这里用SVG的path去做(其实这里可以直接用背景图), 代码如下:

<!-- 代码是用react写的, 删除了遍历以及部分代码 -->
 
<svg>
    <!-- 工具描述提示符,被用在fill里做过滤等操作,这里是小球底部的发光 -->
    <defs>
        <radialGradient id="grad1" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
            <stop offset="0%" style={{ stopColor: "rgba(2,246,255,.5)" }} />
            <stop offset="100%" style={{ stopColor: "rgba(2,246,255,0)" }} />
        </radialGradient>
    </defs>
    <!-- 这里遍历N个淡蓝色线条路径 d为路径-->
    <path d={item.path} stroke="rgba(29,159,167,0.4)" fill="transparent" strokeWidth={5}></path>
    ...
    <!-- 这里是发光小球 通过两个圆叠加形成 -->
    <g>
        <circle cx={cx} cy={cy} r="15" fill="url(#grad1)"></circle>
        <circle cx={cx} cy={cy} r="5" fill="rgba(2,246,255)"></circle>
    </g>
</svg>

创建DOM并按照轨迹动画

这里的核心原理通过offset-path这个属性设置运动偏移路径,再通过offset-distance来设置偏移量,这样通过css3 animation就可以让元素按照一定的轨迹运动

<!-- 这里要保证盒子跟SVG的盒子位置重合,宽高一致,这样路径点才能一致 -->
<div className={styles.animate}>
    <!-- 这里遍历N个div,让每一个div都按照offsetPath也就是svg内path的d的值进行流动 -->
    <!-- animationDelay 负数表示渲染前就已经执行, 渲染时就可以铺满整个路径 -->
    <div key={index} className={styles.point3} style={{ "offsetPath": "path('M 105 34 L 5 34')", "animationDelay": `-${index * 1}s`, "animationDuration": '5s', 'animationPlayState': `${stop ? 'paused' : 'running'}` }}></div>
    ...
</div>
.point3 {
    width: 10px;
    height: 2px;
    // offset-path: path('M 248 108 L 248 172 L 1510 172');
    offset-distance: 0%;
    animation: flow 20s linear normal infinite;
    background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 10%, #FEFE02);
    position: absolute;
    left: 0;
    right: 0;
}
}
 
@keyframes flow {
    from {
        offset-distance: 0%;
    }
 
    to {
        offset-distance: 100%;
    }
}

 

HTML / CSS 相关文章推荐
css3 position fixed固定居中问题解决方案
Aug 19 HTML / CSS
CSS3中的Media Queries学习笔记
May 23 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
Jan 31 HTML / CSS
HTML5 Video/Audio播放本地文件示例介绍
Nov 18 HTML / CSS
HTML5图片预览实例分享
Jun 04 HTML / CSS
HTML5 Canvas 旋转风车绘制
Aug 18 HTML / CSS
html5 figure和figcaption的使用方法
Sep 10 HTML / CSS
canvas绘图按照contain或者cover方式适配并居中显示
Feb 18 HTML / CSS
浅谈HTML5新增和废弃的标签
Apr 28 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
Mar 04 HTML / CSS
使用CSS3实现按钮悬停闪烁动态特效代码
Aug 30 HTML / CSS
CSS 实现磨砂玻璃(毛玻璃)效果样式
May 21 HTML / CSS
如何通过 CSS 写出火焰效果
Html5移动端div固定到底部实现底部导航条的几种方式
Mar 09 #HTML / CSS
HTML5拖拽文件上传的示例代码
Mar 04 #HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
Feb 24 #HTML / CSS
Canvas在超级玛丽游戏中的应用详解
Feb 06 #HTML / CSS
Html5移动端网页端适配(js+rem)
Feb 03 #HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
Feb 03 #HTML / CSS
You might like
Php+SqlServer实现分页显示
2006/10/09 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
php中mysql操作buffer用法详解
2015/03/19 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
javascript 伪数组实现方法
2010/10/11 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
Python基础之字典常见操作经典实例详解
2020/02/26 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
python def 定义函数,调用函数方式
2020/06/02 Python
Python celery原理及运行流程解析
2020/06/13 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
如何理解transaction事务的概念
2015/05/27 面试题
传播学专业毕业生自荐信
2013/11/04 职场文书
自考毕业自我鉴定
2014/03/18 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
未婚证明范本
2015/06/15 职场文书