效果预览在当前页面点击右侧的“点击预览”按钮进行预览,点击链接进行预览全屏。https://codepen.io/comehop??e/pen/xJrOqd互动视频本视频为互动视频,您可以随时暂停视频,编辑视频中的代码。请使用chrome、safari、edge打开观看。https://scrimba.com/p/pEgDAM/cr6Vetm源码下载日常前端实战系列完整源码请到github下载:https://github.com/comehop??e/front-end-daily-挑战代码解释定义dom,容器包含6个
元素包含,每个
元素代表1个粒子:
居中显示:body{margin:0;高度:100vh;显示:弹性;对齐项目:居中;证明内容:居中;background-color:black;}定义容器尺寸:.container{width:70vmin;height:70vmin;}将
定位在容器内,并且使用在
中绘制粒子:.container{display:flex;对齐项目:居中;证明内容:居中;}.containerdiv{位置:绝对;宽度:10vmin;height:10vmin;}.containerdivspan{position:absolute;宽度:继承;身高:继承;边界半径:50%;背景色:石灰绿;transform:translateX(300%);}使用变量定义粒子的旋转角度,其中--particles-per-circle每圈的粒子数,因为每个圈有3个粒子,所以有3个位置圆,每个位置有2个粒子相互重叠。此时,看起来只有3个粒子:.container{--particles-per-circle:3;}.containerdiv{transform:rotate(calc(var(--n)/var(--particles-每圈)*-deg));}.containerdiv:nth-child(1){--n:1;}.containerdiv:nth-child(2){--n:2;}.??containerdiv:nth-child(3){--n:3;}.containerdiv:nth-child(4){--n:4;}.containerdiv:nth-child(5){--n:5;}.containerdiv:nth-child(6){--n:6;}定义粒子从中心向外移动效果:.containerdivspan{animation:move2slinearinfinite;}@keyframesmove{from{transform:translateX(0)规模(0);}70%{transform:translateX(210%)scale(0.55);}到{转换:translateX(300%)scale(0);}}添加粒子移动时改变颜色的效果,沿色相圈取10种颜色:.containerdivspan{animation:move2slinearinfinite,change-color2slinearinfinite;}@keyframeschange-color{0%,100%{背景色:hsl(calc(0/100*360deg),80%,55%);}10%{背景色:hsl(calc(10/100*360deg),80%,55%);}20%{背景色:hsl(calc(20/100*360度),80%,55%);}30%{背景颜色:hsl(calc(30/100*360deg),80%,55%);}40%{背景颜色:hsl(calc(40/100*360deg),80%,55%);}50%{背景颜色:hsl(calc(50/100*360deg),80%,55%);}60%{背景颜色:hsl(calc(60/100*360deg),80%,55%);}70%{背景颜色:hsl(calc(70/100*360deg),80%,55%);}80%{背景颜色:hsl(calc(80/100*360deg),80%,55%);}90%{背景色:hsl(calc(90/100*360度),80%,55%);}}使用变量设置动画延迟,可以看到6个粒子依次出现。其中--circles代表圈数;--particles表示粒子数,等于每圈粒子数与圈数的乘积:.container{--circles:2;--particles:calc(var(--particles-per-circle)*var(--circles));}.containerdivspan{animation-delay:calc(var(--n)/var(--particles)*-2s);}然后使用d3批量创建粒子。引入d3库:使用d3给--particles-per-circle赋值和--css的圆圈变量:constPARTICLES_PER_CIRCLE=3;constCIRCLES=2;d3.select('.container').style('--particles-per-circle',PARTICLES_PER_CIRCLE).style('--circles',CIRCLES);用d3元素创建粒子dom:constCOUNT_OF_PARTICLES=PARTICLES_PER_CIRCLE*CIRCLES;d3.select('.container').style('--particles-per-circle',PARTICLES_PER_CIRCLE).style('--circles',CIRCLES).selectAll('div').data(d3.range(COUNT_OF_PARTICLES)).enter().append('div').append('span');使用d3给粒子元素的--n变量赋值:d3.select('.container').style('--particles-per-circle',PARTICLES_PER_CIRCLE).style('--circles',CIRCLES).selectAll('div').data(d3.range(COUNT_OF_PARTICLES)).enter().append('div').style('--n',(d)=>d+1).append('span');删除dom中的粒子元素和用css声明的变量。最后调整每圈的粒子数和圈数,形成旋臂效果:constPARTICLES_PER_CIRCLE=14;const圆圈=4;你完成了!
最新推荐
猜你喜欢
- 1数据洞察实践科技金融
- 2虚拟现实渗透到日产汽车的日常生活中,我们应该警惕它的影响吗?
- 3苏宁频频凸显公益实践,荣获中国扶贫基金会“2017年度突出贡
- 4叮咚账号:日常消费也是做慈善?做慈善我们是认真的!
- 5数据治理与应用实践国家标准宣贯(广州站)暨数据资产国家标准制
- 6七牛云宫晶!基于容器与大数据的碰撞,SPOCK平台持续集成与
- 7百度人员地震!陆奇卸任COO并退出日常管理【附李彦宏内部信】
- 8可穿戴设备的未来!不仅仅是日常用品
- 9可穿戴设备!走在行业最前端的行业
- 10可穿戴式瞄准!记录日常饮食的用餐伴侣
- 11可穿戴设备记录贵阳人兰俊“大数据”生活的日常细节
- 12可穿戴设备可能颠覆人们对日常生活的想象
- 13智能电视容易受到黑客攻击,并且可以跟踪用户的日常观看习惯
- 14可穿戴智能产品离日常生活还有多远?
- 15可穿戴技术已经进入日常工作领域,这是福还是忧?
- 16前端售价500万的Spotcat S200智能猫眼评测
- 17iTutorGroup首届前端技术沙龙!如何最大化用户体验
- 18AI+智能家居高峰论坛 探寻AI赋能下智能家居落地实践
- 19锤子京东品牌日常双冠军坚果R1成为性价比最高的845旗舰
- 20人工智能趋势!智慧零售潮流的实践者