千家信息网

怎么使用CSS和D3实现一个舞动的画面

发表于:2024-12-03 作者:千家信息网编辑
千家信息网最后更新 2024年12月03日,小编给大家分享一下怎么使用CSS和D3实现一个舞动的画面,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码解读定义dom,
千家信息网最后更新 2024年12月03日怎么使用CSS和D3实现一个舞动的画面

小编给大家分享一下怎么使用CSS和D3实现一个舞动的画面,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

  代码解读

  定义dom,容器中包含1个.square子容器,子容器中包含4个,每个代表一个对角扇形:

  

  

  

  

  

  

  

  

  居中显示:

  body{

  margin:0;

  height:100vh;

  display:flex;

  align-items:center;

  justify-content:center;

  background-color:#222;

  }

  设置容器的尺寸单位,1em等于8px:

  .container{

  font-size:8px;

  }

  子容器中的4个不设宽高,只设边框,其中第1个和第4个只取左右边框,第2个和第3个只取上下边框:

  .squarespan{

  display:block;

  border:2.5emsolidtransparent;

  color:#ddd;

  }

  .squarespan:nth-child(1),

  .squarespan:nth-child(4){

  border-left-color:currentColor;

  border-right-color:currentColor;

  }

  .squarespan:nth-child(2),

  .squarespan:nth-child(3){

  border-top-color:currentColor;

  border-bottom-color:currentColor;

  }

  把边框改为圆弧:

  .squarespan{

  border-radius:50%;

  }

  在子容器中用grid布局把4个设置为2*2的网格:

  .square{

  display:grid;

  grid-template-columns:repeat(2,1fr);

  grid-gap:0.2em;

  padding:0.1em;

  }

  旋转4个,使它们围合成一个正方形,看起来像一个花朵,算式的结果是45度,写成这样是为了和接下来的动画的算式的形式保持一致:

  .squarespan{

  transform:rotate(calc(45deg+90deg*0));

  }

  增加让旋转的动画,整个动画过程旋转4次,每次旋转90度,4次旋转之后即返回原位:

  .squarespan{

  animation:rotation2sease-in-outinfinite;

  }

  @keyframesrotation{

  0%{transform:rotate(calc(45deg+90deg*0));}

  25%{transform:rotate(calc(45deg+90deg*1));}

  50%{transform:rotate(calc(45deg+90deg*2));}

  75%{transform:rotate(calc(45deg+90deg*3));}

  100%{transform:rotate(calc(45deg+90deg*4));}

  }

  使其中2个朝相反的方向运动:

  .squarespan:nth-child(2),

  .squarespan:nth-child(3){

  animation-direction:reverse;

  }

  至此,一个.square子容器的动画已经完成,接下来制作4个.square的动画。

  在dom中再增加3组.square子容器:

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  用grid布局把4个.square布局成网格状,变量--columns是网格的边长,即每边有2个.square子容器:

  .container{

  display:grid;

  --columns:2;

  grid-template-columns:repeat(var(--columns),1fr);

  }

  现在看起来好像是有几个黑色的小方块在不停地移动,当dom元素越多时,动画效果看起来就越壮观,就像集体舞一样,人越多越有气势。接下来用d3批量增加dom的元素。

  引入d3库:

  

  声明一个COLUMNS常量,表示网格的边长:

  constCOLUMNS=2;

  删除掉html文件中的.square子元素,改为用d3动态创建:

  d3.select('.container')

  .selectAll('p')

  .data(d3.range(COLUMNS*COLUMNS))

  .enter()

  .append('p')

  .attr('class','square');

  继续用连缀语法增加子元素:

  d3.select('.container')

  .selectAll('p')

  .data(d3.range(COLUMNS*COLUMNS))

  .enter()

  .append('p')

  .attr('class','square')

  .selectAll('span')

  .data(d3.range(4))

  .enter()

  .append('span');

  删除掉css文件中的--columns变量声明,改为用d3动态声明:

  d3.select('.container')

  .style('--columns',COLUMNS)

  /*略*/

  最后,把边长改为4,即让16个.square一起动画:

  constCOLUMNS=4;



以上是"怎么使用CSS和D3实现一个舞动的画面"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

很赞哦!
容器 动画 元素 网格 边框 接下来 布局 篇文章 边长 画面 内容 动态 变量 文件 算式 中包 越多 一致 壮观 上下 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 女巫来了无法链接到内容服务器 郑州鸠鸠互联网科技 计算机网络技术主要干嘛的 我的世界神奇宝贝服务器推荐开局送方块 山东专科网络技术专业排名 网络安全的好坏辩论赛 会员数据库 江苏热凉网络技术有限公司 体供给金融信息数据库会坐牢吗 pg数据库组件有哪些 软件开发子公司还要去吗 建立网络安全责任追究机制 机架式服务器怎么配置 法律数据库上热搜 丰台区现代软件开发检修 云服务器内网ip访问不了 国外做无限流量视频源服务器 软件开发知识脉络 上海品质网络技术方案设计 企业数据备份 服务器 网络方案 何展强网络安全 软件开发人员转信息化管理岗 易用性设计软件开发 数据库管理很难吗 数据库 关系型 非关系型 网络安全法律知识竞赛题 网络安全的认识英语 铁岭游戏软件开发在线咨询 软件开发涉嫌诈骗 语音会议软件开发哪家强些
0