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

本篇文章给大家带来的内容是关于如何使用css和d3实现黑白交叠的动画效果,文章介绍了对js中this的理解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果预览

3582692678-5b7642e8b9a63_articlex.gif

代码解读

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

居中显示:

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;}.circles span {    position: absolute;    box-sizing: border-box;    width: 50%;    height: 50%;    background-color: white;    border-radius: 50%;    left: 25%;}

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

.circles {    --particles: 3;}.circles span {    transform-origin: bottom center;    --deg: calc(360deg / var(--particles) * (var(--n) - 1));    transform: rotate(var(--deg));}.circles span:nth-child(1) {    --n: 1;}.circles span:nth-child(2) {    --n: 2;}.circles span:nth-child(3) {    --n: 3;}

为子元素增加动画效果:

.circles span {    animation: rotating 5s ease-in-out infinite;}@keyframes rotating {    0% {        transform: rotate(0);    }    50% {        transform: rotate(var(--deg)) translateY(0);    }    100% {        transform: rotate(var(--deg)) translateY(100%) scale(2);    }}

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

.circles span {    mix-blend-mode: difference;}

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

.circles {    animation: zoom 5s linear infinite;}@keyframes zoom {    to {        transform: scale(0.5) translateY(-50%);    }}

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


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

const COUNT_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 个:

const COUNT_OF_PARTICLES = 30;

大功告成!

相关推荐:

如何使用纯CSS 实现一个没有DOM元素的动画效果

如何使用纯CSS实现一只移动的小白兔动画效果

如何使用CSS实现货车loader的效果

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

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 02:03:00
下一篇 2025年12月24日 02:03:13

相关推荐

  • 如何使用CSS和D3实现用文字组成的心形动画效果(附代码)

    本篇文章给大家带来的内容是关于如何使用css和d3实现用文字组成的心形动画效果(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 立即学习“前端…

    2025年12月24日
    000
  • css实现3d动画特效的代码实例

    本篇文章给大家带来的内容是关于css实现3d动画特效的代码实例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 首先让我们来看一张效果图 1.1.1 属性 perspective :透距离,单位像素(值越小,透视距离越近,效果越明显):设置父元素上 perspective-origi…

    2025年12月24日
    000
  • CSS盒模型中两种模型的简单介绍

    本篇文章给大家带来的内容是关于css盒模型中两种模型的简单介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 基本概念 盒模型是有两种标准的,一个是标准模型,一个是IE模型。 标准模型中,盒模型的宽高只是内容(content)的宽高 IE模型中盒模型的宽高是内容(content)+…

    2025年12月24日
    000
  • 如何使用CSS实现货车loader的效果

    本篇文章给大家带来的内容是关于如何使用css实现货车loader的效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 代码解读 定义 dom,容器代表卡车,包含的 2 个子元素代表车头和尾气; 代表道路: 立即学习“前端免费学习笔记(深入)”; 居中显示,同时道路与页面之…

    2025年12月24日
    000
  • 如何使用纯CSS实现一只移动的小白兔动画效果

    本篇文章给大家带来的内容是关于如何使用纯css实现一只移动的小白兔动画效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 代码解读 定义 dom,页面中包含 2 个元素,分别代表兔子和云朵: 立即学习“前端免费学习笔记(深入)”; 居中显示: body { margin:…

    2025年12月24日
    000
  • 如何使用纯CSS实现一个微笑打坐的小和尚

    本篇文章给大家带来的内容是关于如何使用纯css实现一个微笑打坐的小和尚 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览: 代码解读: 定义 dom,容器中包含的几个元素分别代表头部、眼睛、嘴、身体和腿: 立即学习“前端免费学习笔记(深入)”; 居中显示: body { m…

    2025年12月24日
    000
  • css flex布局(弹性布局)的属性有哪些?css flex布局属性的介绍

    本篇文章给大家带来的内容是关于css flex布局(弹性布局)的属性有哪些?css flex布局属性的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局…

    好文分享 2025年12月24日
    000
  • css3D+动画的例子(附完整代码)

    本篇文章给大家带来的内容是关于css3d+动画的例子(附完整代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 前言 最近玩了玩用css来构建3D效果,写了几个demo,所以博客总结一下。  在阅读这篇博客之前,请先自行了解一下css 3D的属性,例如:transform-sty…

    2025年12月24日 好文分享
    000
  • 如何使用CSS 和D3实现摆线摇摆的效果动画

    本篇文章给大家带来的内容是关于如何使用css 和d3实现摆线摇摆的效果动画,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 代码解读 定义 dom,容器中包含 3 个元素,代表 3 条摆线: 居中显示: body { margin: 0; height: 100vh; di…

    2025年12月24日
    000
  • css3中animation属性实现箭头向右滚动渐隐的代码

    这篇文章给大家介绍的内容是关于css3中animation属性实现箭头向右滚动渐隐的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 这是一个右箭头的小图标。 keyframes 创建一个css3动画用 animation 调用 并用延迟动画的办法 做出匀速滚动的效果。 直接贴上…

    好文分享 2025年12月24日
    000
  • css实现表格的行和列相互交换的代码

    这篇文章给大家介绍的内容是关于css实现表格的行和列相互交换的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 行列互换table {border: 1px solid #ccc;font-size: 14px;}table th {background: orange;colo…

    好文分享 2025年12月24日
    000
  • css如何在菜单上实现对勾?(代码)

    本篇文章给大家带来的内容是关于css如何在菜单上实现对勾?(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 :after :before li { list-style-type: none; position: relative; margin: 2px; padding:…

    2025年12月24日
    000
  • css实现布局时可以用的几个技巧(代码)

    本篇文章给大家带来的内容是关于css实现布局时可以用的几个技巧(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 面对似曾相识的布局 侧边固定中间自适应,头部固定中间自适应,长得差不多的panel组件,model组件 我们有前端框架bootstrap,easyui都有提供这些组…

    好文分享 2025年12月24日
    000
  • css中Flex布局如何实现九宫格的样式(代码)

    本篇文章给大家带来的内容是关于css中flex布局如何实现九宫格的样式(代码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 .block { padding-top: 30%; margin-top: 3%; border-radius: 10%; background-col…

    2025年12月24日
    000
  • CSS布局有哪些?css常见的布局方式(附代码)

    css布局有哪些?css布局可以让页面看起来比较美观整洁,接下来的这篇文章给大家总结了css中常见的几种布局方式,让我们具体的看一看。 水平居中布局 1、margin + 定宽 Demo .child { width: 50px; margin: 0 auto; } 运行结果: 立即学习“前端免费学…

    2025年12月24日 好文分享
    000
  • 如何使用CSS实现过山车loader的动画效果

    本篇文章给大家带来的内容是关于如何使用css实现过山车loader的动画效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 代码解读 定义 dom,容器中包含 3 个元素,代表 3 个圆点: 立即学习“前端免费学习笔记(深入)”; 居中显示: body { margin:…

    2025年12月24日
    000
  • css三栏布局的三种实现方式(圣杯布局、双飞翼布局、Flex布局)

    本篇文章给大家带来的内容是关于lnmp以源码的方式记录环境搭建的过程(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果图: 圣杯布局 圣杯.container{ padding:0 200px 0 180px; height:100px;}.left{ float:lef…

    2025年12月24日
    000
  • flex布局实现网易云播放器界面的布局

    这篇文章给大家介绍的内容是关于flex布局实现网易云播放器界面的布局,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 今天我们就深入项目的细节,说说每一个切图人员绕不过去的坎儿,也是jser必须要面对的一个常规任务–《网易云音乐高复用的响应式轮播图的实现》 轮播图相对于大…

    2025年12月24日 好文分享
    000
  • 什么是css?css三种样式以及文字属性的介绍

    这篇文章给大家介绍的内容是关于什么是css?css三种样式以及文字属性的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 什么是CSS? Cascading Style Sheets,简称CSS,层叠样式表。  用来修饰HTML文件,对网页元素进行排版或大小控制等操作。  也就是…

    好文分享 2025年12月24日
    000
  • css box-sizing属性(盒子模型)的用法介绍

    本篇文章给大家带来的内容是关于CSS中text-transform属性实现字符串转换的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1.关于box-sizing: 属性用于更改用于计算元素宽度和高度的默认的 css 盒子模型。 值有:content-box(默认值),bord…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信