如何使用CSS 和D3实现摆线摇摆的效果动画

本篇文章给大家带来的内容是关于如何使用cssd3实现摆线摇摆的效果动画,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果预览

1165599247-5b6cd55b9bc03_articlex.gif

代码解读

定义 dom,容器中包含 3 个元素,代表 3 条摆线:

居中显示:

body {    margin: 0;    height: 100vh;    display: flex;    align-items: center;    justify-content: center;    background: linear-gradient(lightyellow, burlywood);}

定义容器的尺寸,并画出固定摆线示意墙:

立即学习“前端免费学习笔记(深入)”;

.pendulums {    width: 40em;    height: 30em;    font-size: 10px;    border-top: 0.3em solid cadetblue;}

画出一条摆线:

.pendulums {    position: relative;}.pendulums span {    position: absolute;    width: 0.2em;    height: 15em;    background-color: cadetblue;    left: 50%;}

用伪元素画出摆线底部悬挂的小球:

.pendulums span::before {    content: '';    position: absolute;    width: 1.5em;    height: 1.5em;    background: steelblue;    border-radius: 50%;    top: 100%;    left: -0.75em;}

用径向渐变为小球增加光影:

.pendulums span::before {    background: radial-gradient(        circle at 70% 35%,        white,        darkturquoise 30%,        steelblue 50%    );}

用伪元素画出小球的阴影:

.pendulums span::after {    content: '';    position: absolute;    width: 2em;    height: 0.3em;    background-color: rgba(0, 0, 0, 0.2);    top: 120%;    left: -1em;    filter: blur(0.4em);}

以摆线的顶点为原点,将摆线向左旋转:

.pendulums span {    transform-origin: 50% top;    transform: rotate(25deg);}

让摆线摆动起来:

.pendulums span {    animation: swing ease-in-out infinite;    animation-duration: 1.5s;}@keyframes swing {    50% {        transform: rotate(-25deg);    }}

为每条摆线定义下标变量:

.pendulums span:nth-child(1) {    --n: 1;}.pendulums span:nth-child(2) {    --n: 2;}.pendulums span:nth-child(3) {    --n: 3;}

用变量设置摆线的长度,和动画的时长,都是逐渐增大的等差数列:

.pendulums span {    height: calc((var(--n) - 1) * 1em + 15em);    animation-duration: calc((var(--n) - 1) * 0.02s + 1.5s);}

接下来用 d3 来批量处理 dom 元素和 css 变量:
引入 d3 库:


用 d3 创建摆线的 dom 元素:

const COUNT = 3;d3.select('.pendulums')    .selectAll('span')    .data(d3.range(COUNT))    .enter()    .append('span')

用 d3 定义摆线的下标变量:

d3.select('.pendulums')    .selectAll('span')    .data(d3.range(COUNT))    .enter()    .append('span')    .style('--n', (d) => d + 1);

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

最后,把摆线的数量调整为 15 个。

const COUNT = 15;

相关推荐:

如何使用CSS实现过山车loader的动画效果

如何使用纯CSS实现一头绿猪的效果

以上就是如何使用CSS 和D3实现摆线摇摆的效果动画的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1611115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
css中定位问题:绝对定位、相对定位、fixed和static
上一篇 2025年12月24日 01:59:22
css怎么实现卡片图像翻转效果?(特效示例)
下一篇 2025年12月24日 02:00:07

相关推荐

发表回复

登录后才能评论
关注微信