千家信息网

怎么用CSS和D3实现一组彩灯

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

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

  代码解读

  定义dom,容器中包含9个元素,代表9个数字:

  

  3

  1

  4

  1

  5

  9

  2

  6

  5

  

  居中显示:

  body{

  margin:0;

  height:100vh;

  display:flex;

  align-items:center;

  justify-content:center;

  background-color:black;

  }

  定义容器尺寸:

  .pi{

  width:30em;

  height:30em;

  font-size:12px;

  }

  把9个数字布局成3*3的网格:

  .pi{

  display:grid;

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

  grid-gap:0.2em;

  }

  .pispan{

  color:white;

  font-size:3em;

  background-color:hsl(0,40%,40%);

  font-family:sans-serif;

  border-radius:50%;

  display:flex;

  align-items:center;

  justify-content:center;

  user-select:none;

  }

  在dom中定义css变量,变量值等于该元素代表的数字:

  

  3

  1

  4

  1

  5

  9

  2

  6

  5

  

  为不同的数字设置不同的背景色:

  .pispan{

  --c:hsl(calc(var(--d)*36),40%,40%);

  background-color:var(--c);

  }

  使数字的颜色与背景相同,在鼠标悬停时,高度当前的数字:

  .pispan{

  color:var(--c);

  transition:0.3s;

  }

  .pispan:hover{

  background-color:white;

  color:black;

  box-shadow:001emyellow;

  }

  至此,完成了视觉效果设计,接下来用d3批量处理dom元素和css变量。

  引入d3库:

  

  删除掉html文件中代表数字的dom元素,用d3创建代表数字的dom元素,并设置css变量:

  constPI='314159265';

  d3.select('.pi')

  .selectAll('span')

  .data(PI)

  .enter()

  .append('span')

  .style('--d',(d)=>d)

  .text((d)=>d);

  把PI改为100位:

  constPI='3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067';

  同时把网格改为10*10的布局:

  .pi{

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

  }

  .pispan{

  font-size:1.3em;

  }

  接下来制作循环点亮的效果。

  为各数字元素增加css类,数字0的类名是d0,数字1的类名是d2,以此类推:

  d3.select('.pi')

  .selectAll('span')

  .data(PI)

  .enter()

  .append('span')

  .attr('class',(d)=>`d${d}`)

  .style('--d',(d)=>d)

  .text((d)=>d);

  定义循环变量number,它从1开始逐渐递增:

  letnumber=1;

  定义一个函数,用于点亮特定数字的一组元素:

  functionshow(){

  d3.selectAll(`.pispan.d${number}`)

  .classed('show',true);

  d3.selectAll(`.pispan.d${(number-1)}`)

  .classed('show',false);

  number++;

  }

  最后,设置一个间隔时间,不断重复调用上面这个函数,让各组数字依次点亮:

  setInterval(show,500);




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

数字 元素 代表 变量 篇文章 彩灯 不同 接下来 内容 函数 容器 布局 效果 类名 网格 背景 循环 相同 以此类推 不怎么 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南数据库安全箱销售厂家 网络工程和软件开发哪个大学好 江西服务器 榆树有名的网络技术参考价格 拉萨互动法治文化展馆软件开发 网络安全设备常见的管理方式 未来网络技术有哪些 物联网服务器功能分层 苏灵易购网络技术有限公司 软件开发美工学什么 自考互联网数据库 迷你世界最有名的创造服务器 40万年薪网络安全工程师 数据库中的聚合函数是哪些 软件开发质量情况 网络安全教育手抄报 内容 芜湖软件开发多少钱 xml数据库优势 华为存储空间管理器服务器 全球最大软件开发交易平台 如何获得梦幻西游手游服务器 数匙网络技术有限公司 设置可信任dhcp服务器 网络安全工作培训总结 数据库技术是电子政务应用 网络安全法明确的安全监管机构 姜堰区自动网络技术市场 用python做软件开发 软件开发需要的工具和设备 我的世界单挑僵尸服务器
0