怎么用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%10}`)

.classed('show',true);

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

.classed('show',false);

number++;

}

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

setInterval(show,500);



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

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


当前名称:怎么用CSS和D3实现一组彩灯
本文来源:http://azwzsj.com/article/gjgsse.html

其他资讯