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 please 跨浏览器的CSS3产生器
Mar 14 HTML / CSS
CSS3实例分享--超炫checkbox复选框和radio单选框
Sep 01 HTML / CSS
CSS3 实现侧边栏展开收起动画
Dec 22 HTML / CSS
使用CSS3实现圆角,阴影,透明
Dec 23 HTML / CSS
CSS3的first-child选择器实战攻略
Apr 28 HTML / CSS
css3 column实现卡片瀑布流布局的示例代码
Jun 22 HTML / CSS
10分钟理解CSS3 Grid布局
Dec 20 HTML / CSS
HTML5新增的标签和属性归纳总结
May 02 HTML / CSS
Html5如何唤起百度地图App的方法
Jan 27 HTML / CSS
html5教程制作简单画板代码分享
Dec 04 HTML / CSS
html5使用canvas画三角形
Dec 15 HTML / CSS
HTML5实现多张图片上传功能
Mar 11 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网站提速三大“软”招
2006/10/09 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
Python 除法小技巧
2008/09/06 Python
python内置数据类型之列表操作
2018/11/12 Python
python三大神器之fabric使用教程
2019/06/10 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
python列表生成器迭代器实例解析
2019/12/19 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
北京华建集团SQL面试题
2014/06/03 面试题
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
公务员个人考察材料
2014/12/23 职场文书
八达岭长城导游词
2015/01/30 职场文书
大明湖导游词
2015/02/03 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
污染环境建议书
2015/09/14 职场文书
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS