文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用CSS和D3实现黑白交叠的动画效果

2024-04-02 19:55

关注

这篇文章将为大家详细讲解有关怎么使用CSS和D3实现黑白交叠的动画效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

  代码解读

  定义dom,容器中包含3个子元素,每个子元素代表一个圆:

  <divclass="circles">

  <span></span>

  <span></span>

  <span></span>

  </div>

  居中显示:

  body{

  margin:0;

  height:100vh;

  display:flex;

  align-items:center;

  justify-content:center;

  background-color:black;

  }

  定义容器尺寸:

  .circles{

  width:60vmin;

  height:60vmin;

  }

  画出容器中的1个圆:

  .circles{

  position:relative;

  }

  .circlesspan{

  position:absolute;

  box-sizing:border-box;

  width:50%;

  height:50%;

  background-color:white;

  border-radius:50%;

  left:25%;

  }

  定义变量,画出多个圆,每个圆围绕着第1个圆的底部中点旋转,围成一个更大的圆形:

  .circles{

  --particles:3;

  }

  .circlesspan{

  transform-origin:bottomcenter;

  --deg:calc(360deg/var(--particles)*(var(--n)-1));

  transform:rotate(var(--deg));

  }

  .circlesspan:nth-child(1){

  --n:1;

  }

  .circlesspan:nth-child(2){

  --n:2;

  }

  .circlesspan:nth-child(3){

  --n:3;

  }

  为子元素增加动画效果:

  .circlesspan{

  animation:rotating5sease-in-outinfinite;

  }

  @keyframesrotating{

  0%{

  transform:rotate(0);

  }

  50%{

  transform:rotate(var(--deg))translateY(0);

  }

  100%{

  transform:rotate(var(--deg))translateY(100%)scale(2);

  }

  }

  设置子元素混色模式,使子元素间交叠的部分显示成黑色:

  .circlesspan{

  mix-blend-mode:difference;

  }

  为容器增加动画效果,抵销子元素放大,使动画流畅衔接:

  .circles{

  animation:zoom5slinearinfinite;

  }

  @keyframeszoom{

  to{

  transform:scale(0.5)translateY(-50%);

  }

  }

  接下来用d3批量处理dom元素和css变量。

  引入d3库:

  <scriptsrc="https://d3js.org/d3.v5.min.js"></script>

  用d3为表示圆数量的变量赋值:

  constCOUNT_OF_PARTICLES=30;

  d3.select('.circles')

  .style('--particles',COUNT_OF_PARTICLES)

  用d3生成dom元素:

  d3.select('.circles')

  .style('--particles',COUNT_OF_PARTICLES)

  .selectAll('span')

  .data(d3.range(COUNT_OF_PARTICLES))

  .enter()

  .append('span');

  用d3为表示子元素下标的变量赋值:

  d3.select('.circles')

  .style('--particles',COUNT_OF_PARTICLES)

  .selectAll('span')

  .data(d3.range(COUNT_OF_PARTICLES))

  .enter()

  .append('span')

  .style('--n',(d)=>d+1);

  删除掉html文件中的相关dom元素和css文件中相关的css变量。

  最后,把圆的数量调整为30个:

  constCOUNT_OF_PARTICLES=30;

  大功告成!


怎么使用CSS和D3实现黑白交叠的动画效果怎么使用CSS和D3实现黑白交叠的动画效果

关于“怎么使用CSS和D3实现黑白交叠的动画效果”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯