如何使用CSS和D3实现光斑粒子交相辉映的效果 (附源码)

本篇文章给大家带来的内容是关于如何使用css和d3实现光斑粒子交相辉映的效果 (附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果预览

981403899-5ba2d8eea4413_articlex.gif

源代码下载

每日前端实战系列的全部源代码请从 github 下载:

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,容器中包含 3 个子元素:

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

设置页面背景:

body {    margin: 0;    width: 100vw;    height: 100vh;    background: radial-gradient(circle at center, #222, black 20%);}

定义容器尺寸:

.container {    width: 100%;    height: 100%;}

设置光斑的样式,其中定义了偏亮和偏暗的 2 个颜色变量:

.container {    position: relative;}.container span {    --bright-color: #d4ff00;    --dark-color: #e1ff4d;    position: absolute;    width: 30px;    height: 30px;    margin-left: -15px;    margin-top: -15px;    background: radial-gradient(var(--bright-color), var(--dark-color));    border-radius: 50%;    box-shadow: 0 0 25px 3px var(--dark-color);}

把光斑定位到页面中心:

.container span {    transform: translateX(50vw) translateY(50vh);}

增加光斑从中心向四周扩散和收缩的动画效果:

.container span {    animation: animate 1.5s infinite alternate;    animation-delay: calc(var(--n) * 0.015s);}@keyframes animate {    80% {        filter: opacity(1);    }    100% {        transform: translateX(calc(var(--x) * 1vw)) translateY(calc(var(--y) * 1vh));        filter: opacity(0);    }}

定义动画中用到的变量 --x--y--n

.container span:nth-child(1) {    --x: 20;    --y: 30;    --n: 1;    }.container span:nth-child(2) {    --x: 60;    --y: 80;    --n: 2;}.container span:nth-child(3) {    --x: 10;    --y: 90;    --n: 3;}

设置容器的景深,使光斑的运动有从远到近的感觉:

.container {    perspective: 500px;}.container span {    transform: translateX(50vw) translateY(50vh) translateZ(-1000px);}

至此,少量元素的动画效果完成,接下来用 d3 批量创建 dom 元素和 css 变量。
引入 d3 库,同时删除 html 文件中的子元素和 css 文件中的子元素变量:


定义光斑粒子数量:

const COUNT = 3;

批量创建 dom 元素:

d3.select('.container')    .selectAll('span')    .data(d3.range(COUNT))    .enter()    .append('span');

为 dom 元素设置 --x--y--n 的值,其中 --x--y 是 1 到 99 的随机数:

d3.select('.container')    /* 略 */    .style('--x', () => d3.randomUniform(1, 99)())    .style('--y', () => d3.randomUniform(1, 99)())    .style('--n', d => d);

再为 dom 元素设置 --bright-color--dark-color 的值:

d3.select('.container')    /* 略 */    .style('--dark-color', (d) => d3.color(`hsl(${70 + d * 0.1}, 100%, 50%)`))    .style('--bright-color', (d) => d3.color(`hsl(${70 + d * 0.1}, 100%, 50%)`).brighter(0.15));

最后,把光斑粒子数量设置为 200 个:

const COUNT = 200;

大功告成!

以上就是如何使用CSS和D3实现光斑粒子交相辉映的效果 (附源码)的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 02:41:27
下一篇 2025年12月24日 02:41:38

相关推荐

  • 五个实用技巧,让你更好地使用display

    探索display的五个实用技巧 在现代社会中,display(展示)已经成为了一个非常重要的概念。无论是在商业领域还是在个人生活中,我们都需要有一定的展示能力来吸引人们的注意力,让自己或者自己的产品得到更多的关注和认可。本文将介绍五个实用的display技巧,帮助读者更好地展示自己。 技巧一:创造…

    2025年12月24日
    000
  • 为什么前端固定定位会发生移动问题?

    前端固定定位为什么会出现移动现象? 在进行前端开发时,我们经常会使用CSS中的position属性来控制元素的定位。其中,固定定位(position: fixed)是一种常用的定位方式,它可以让元素相对于浏览器窗口进行定位,保持在页面的固定位置不动。 然而,有时候我们会遇到一个问题:在使用固定定位时…

    2025年12月24日
    000
  • 从初学到专业:掌握这五种前端CSS框架

    CSS是网站设计中重要的一部分,它控制着网站的外观和布局。前端开发人员为了让页面更加美观和易于使用,通常使用CSS框架。这篇文章将带领您了解这五种前端CSS框架,从入门到精通。 Bootstrap Bootstrap是最受欢迎的CSS框架之一。它由Twitter公司开发,具有可定制的响应式网格系统、…

    2025年12月24日
    200
  • 克服害怕做选择的恐惧症:这五个前端CSS框架将为你解决问题

    选择恐惧症?这五个前端CSS框架能帮你解决问题 近年来,前端开发者已经进入了一个黄金时代。随着互联网的快速发展,人们对于网页设计和用户体验的要求也越来越高。然而,要想快速高效地构建出漂亮的网页并不容易,特别是对于那些可能对CSS编码感到畏惧的人来说。所幸的是,前端开发者们早已为我们准备好了一些CSS…

    2025年12月24日
    200
  • 如何使用CSS实现元素的边框动画效果

    如何使用CSS实现元素的边框动画效果 导语:在网页设计中,为了增加用户的视觉体验和页面的吸引力,常常会使用一些动画效果来使页面元素更加生动和有趣。其中,边框动画是一种很常见的效果,它可以使元素边框呈现出变化、闪烁或者流动的动态效果。本文将介绍如何使用CSS来实现元素的边框动画效果,并提供具体的代码示…

    2025年12月24日
    000
  • CSS动画:如何实现元素的抖动缩放效果

    CSS动画:如何实现元素的抖动缩放效果 在网页设计中,元素的动画效果能够增加用户的视觉体验,为平淡的页面增添活力。而CSS动画正是实现这些效果的强大工具之一。本文将详细介绍如何使用CSS动画实现元素的抖动缩放效果,并提供具体的代码示例供读者参考。 抖动缩放效果是一种常见的动画效果,在用户交互、页面加…

    2025年12月24日
    000
  • CSS动画:如何实现元素的闪光效果

    CSS动画:如何实现元素的闪光效果,需要具体代码示例 在网页设计中,动画效果有时可以为页面带来很好的用户体验。而闪光效果是一种常见的动画效果,它可以使元素更加引人注目。下面将介绍如何使用CSS实现元素的闪光效果。 一、闪光的基本实现 首先,我们需要使用CSS的animation属性来实现闪光效果。a…

    2025年12月24日
    000
  • CSS属性实现边框动画效果的技巧

    CSS属性实现边框动画效果的技巧,需要具体代码示例 随着Web技术的不断发展,页面设计的要求也越来越高。在页面设计中,动画效果是吸引用户注意力的重要手段之一。其中,边框动画效果可以为页面增添生气和活力。本文将介绍一些CSS属性的使用技巧,帮助你实现各种各样的边框动画效果。 一、使用transitio…

    2025年12月24日
    000
  • 项目实践:如何结合CSS和JavaScript打造优秀网页的经验总结

    项目实践:如何结合CSS和JavaScript打造优秀网页的经验总结 随着互联网的快速发展,网页设计已经成为了各行各业都离不开的一项技能。优秀的网页设计可以给用户留下深刻的印象,提升用户体验,增加用户的黏性和转化率。而要做出优秀的网页设计,除了对美学的理解和创意的运用外,还需要掌握一些基本的技能,如…

    2025年12月24日
    200
  • CSS 动画属性:transform 和 transition

    CSS 动画属性:transform 和 transition 在现代网页设计中,动画效果已经成为一种不可或缺的元素,能够为页面增添活力和吸引力。CSS 提供了一些属性和功能来实现各种动画效果,其中最常用的两个属性是 transform 和 transition。本文将详细介绍这两个属性,并提供具体…

    2025年12月24日
    000
  • CSS 图像属性指南:outline 和 display

    CSS 图像属性指南:outline 和 display CSS 是前端开发中不可或缺的一部分,其中图像属性也是必不可少的。在这篇文章中,我们将重点介绍两个关于图像属性的重要概念:outline 和 display。本文将详细说明它们的定义、用法以及具体的代码示例。 outline 属性 概述:ou…

    2025年12月24日
    000
  • CSS 动画属性优化技巧:animation 和 transition

    CSS 动画属性优化技巧:animation 和 transition 引言:随着 Web 技术的不断发展,CSS 动画成为了网页设计和开发中非常重要的一部分。在过去,开发者通常使用 JavaScript 来实现动画效果,但现在通过 CSS 动画属性,我们可以更加轻松和高效地创建各种动画效果。本文将…

    2025年12月24日
    000
  • CSS动画指南:手把手教你制作闪光特效

    CSS动画指南:手把手教你制作闪光特效 在当今的网页设计中,动画效果成为了吸引用户注意力和提升用户体验的重要因素之一。其中CSS动画是实现各种效果的常见方法之一。本文将向您介绍如何使用CSS创建一个令人惊叹的闪光特效,并提供具体的代码示例。 闪光特效可以使页面元素在光线的照射下产生闪烁或闪光的效果,…

    2025年12月24日
    000
  • CSS动画教程:手把手教你实现闪烁文本特效

    CSS动画教程:手把手教你实现闪烁文本特效 CSS(Cascading Style Sheets)是一种用于为网页添加样式和布局的标记语言。通过使用CSS,我们可以为HTML元素添加动画效果,使网页更加生动和吸引人。 在本教程中,我将向您展示如何使用CSS来实现一个简单的闪烁文本特效。您将会学到如何…

    2025年12月24日
    000
  • CSS实现标题文字动画效果的方法和技巧

    CSS实现标题文字动画效果的方法和技巧,需要具体代码示例 在网页设计和开发中,动画效果可以提升用户体验,增加页面的吸引力和活力。标题文字动画效果是一种常见的设计手法,它可以让页面的标题更加生动和有趣。本文将介绍一些CSS实现标题文字动画效果的方法和技巧,并提供具体的代码示例。 渐变动画效果 渐变动画…

    2025年12月24日
    000
  • 如何巧妙运用jQuery和CSS3的动画功能创造出吸引人的网页效果

    如何巧妙运用jQuery和CSS3的动画功能创造出吸引人的网页效果 随着互联网技术的不断进步和发展,网页设计作为传递信息和吸引用户注意力的重要手段,无疑扮演着重要的角色。为了提供更好的用户体验,网页设计师们不断寻求创新与突破。而利用jQuery和CSS3的动画功能,成为了设计师们制造吸引人网页效果的…

    2025年12月24日
    000
  • is与where选择器:提升前端编程效率的秘密武器

    is与where选择器:提升前端编程效率的秘密武器 在前端开发中,选择器是一种非常重要的工具。它们用于选择文档中的元素,从而对其进行操作和样式设置。随着前端技术的不断发展,选择器也在不断演化。而其中,is与where选择器成为了提升前端编程效率的秘密武器。 is选择器是CSS Selectors L…

    2025年12月24日
    000
  • 前端技巧分享:使用CSS3 fit-content让元素水平居中

    前端技巧分享:使用CSS3 fit-content让元素水平居中 在前端开发中,我们常常会遇到需要将某个元素水平居中的情况。使用CSS3的fit-content属性可以很方便地实现这个效果。本文将介绍fit-content属性的使用方法,并提供代码示例。 fit-content属性是一个相对于元素父…

    2025年12月24日
    000
  • 前端技术分享:利用fit-content实现页面元素的水平对齐效果

    前端技术分享:利用fit-content实现页面元素的水平对齐效果 在前端开发中,实现页面元素的水平对齐是一个常见的需求。尤其在响应式布局中,我们经常需要让元素根据设备的屏幕大小自动调整位置,使页面更加美观和易读。在本文中,我将分享一种利用CSS属性fit-content来实现页面元素的水平对齐效果…

    2025年12月24日
    000
  • CSS3动画与jQuery的比较:选择适合您项目需求的技术

    CSS3动画与jQuery的比较:选择适合您项目需求的技术 引言: 在前端开发中,动画效果是提升用户体验的重要组成部分。在过去,开发人员主要使用jQuery来实现页面上的动画效果。然而,随着CSS3的发展,它提供了强大的动画功能,使得使用纯CSS来实现动画效果成为可能。本文将对CSS3动画和jQue…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信