D3.js实现线条的流动效果(从一端移动到另一端并且变色)

news2024/9/22 19:32:00

参考:
SVG:理解stroke-dasharray和stroke-dashoffset属性
使用SVG + CSS实现动态霓虹灯文字效果
纯CSS实现帅气的SVG路径描边动画效果


实现的效果为:路径左移到完全看不见的地方,然后一边右移,一边从黑色变为红色
D3.js实现线条的流动效果(从一端移动到另一端并且变色)

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>D3.js实现线条的流动效果(从一端移动到另一端并且变色)</title>
    <script src="https://d3js.org/d3.v7.min.js"></script>
  </head>
<body>
    <script>
        let svg = d3.select('body')
                    .append('svg')
                    .attr('width', 600)
                    .attr('height', 700);
        // 创建一条线段
        svg.append("path")
            .attr("d","m 100,120 500,0")
            .attr("stroke-width","2")
            .attr("stroke","black");

        // 选择路径元素
        let path = svg.select("path");

        // 获取路径总长度
        let totalLength = path.node().getTotalLength();

        // 设置初始属性
        path.attr("stroke-dasharray", totalLength)
            .attr("stroke-dashoffset", totalLength);

        // 过渡动画
        path.transition()
            .duration(2000)
            .ease(d3.easeLinear)
            .attr("stroke", "red")
            .attr("stroke-dashoffset", 0);

    </script>
</body>
</html>

首先,选择路径元素并获取其总长度。然后,设置路径的初始属性,包括颜色、宽度和样式。

在过渡动画中,使用d3.easeLinear缓动函数指定线性动画。在2秒内将路径的颜色更改为红色,并将路径的样式从总长度的值变为0,使其逐渐从头到尾显示为红色。

.attr("stroke-dasharray", totalLength)
.attr("stroke-dashoffset", totalLength);

这两个属性是用来创建 SVG 线段动画效果的。当 stroke-dasharray 属性被设置为 totalLength 时,将路径线段分割成一系列等长度的线段,每个线段的长度为 totalLength。当 stroke-dashoffset 属性被设置为 totalLength 时,路径线段会被偏移整个长度,最初看不到线段,因为其完全被隐藏在路径起点之外。

通过设置这两个属性,我们可以创建出具有动态线条效果的 SVG 路径动画。在这个例子中,路径线段的 stroke-dashoffset 属性的值被动画改变为0,这使得路径的线条渐渐地从起点到终点呈现出来,从而实现了线段动态绘制的效果。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

社科院与杜兰大学金融管理硕士项目—人生的每一条路都可以看作是正确的路

成年人的世界里没有什么是容易的。生活中经常听到人说&#xff1a;早知道现在过得这么辛苦&#xff0c;当年真应该好好读书&#xff1b;早知道这个行业这么难出头&#xff0c;当年真不应该踏入这一行&#xff1b;早知道爱人这么不靠谱&#xff0c;当年不跟他结婚就好了……有时…

系统集成项目管理工程师软考知识点(每天更新)

第一章指路&#xff1a;系统集成项目管理工程师软考知识点&#xff08;第一章已完结&#xff09;_程序猿幼苗的博客-CSDN博客 第二章指路&#xff1a;系统集成项目管理工程师软考知识点&#xff08;第二章已完结&#xff09;_程序猿幼苗的博客-CSDN博客 本专栏将会更新完整~ …

【DRF开发手册】使用 Django Rest Framework 的 @action 定义自定义方法

本文节选自笔者博客&#xff1a; https://www.blog.zeeland.cn/archives/so3f209hfeac &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是Zeeland&#xff0c;全栈领域优质创作者。&#x1f4dd; CSDN主页&#xff1a;Zeeland&#x1f525;&#x1f4e3; 我的博客&…

C++ Primer Plus(第6版) 全书重点学习笔记

目录 第10章 对象和类 10.1 过程性编程和面向对象编程 10.2 抽象和类 10.2.1 类简介 10.2.2 实现类成员函数 10.3 类的构造函数和析构函数 10.3.1 声明和定义构造函数 10.3.2 使用构造函数 10.3.3 默认构造函数 10.3.4 析构函数 10.4 this指针 10.5 对象数组 10.6 …

[长安杯 2021学生组]baigei

Index 前言介绍漏洞 利用思路利用过程一.编写交互函数二.填充Tcache Bin三.释放Tcache Bin四.获取Libc地址五.Tcache Bin Attack六.完整EXP&#xff1a; 前言 最近有点迷茫&#xff0c;开始放松自己了。 心态还不是很对&#xff0c;需要继续调整。 介绍 本题是一题经典的堆题…

Java学习笔记:内部类,静态内部类,匿名内部类

​这是本人学习的总结&#xff0c;主要学习资料如下 疯狂Java讲义第三版&#xff0c;李刚编&#xff0c;电子工业出版社出版 目录 1、内部类1.1、内部类简介1.2、内部类与外部类的关系和区别&#xff1a;1.3、内部类的语法 2、 非静态内部类3、静态内部类4、匿名内部类 1、内部…

“链引擎”入驻案例 | 每天超过35万条存证上链,长安链支撑链上价值流动

引言 长安链“链引擎”计划&#xff08;Powered by Chainmaker&#xff09;(简称&#xff1a;PBC计划)是由长安链生态联盟发起的一项应用赋能计划&#xff0c;旨在以长安链技术体系为核心支撑&#xff0c;汇聚产业各方力量&#xff0c;为应用方提供技术、品牌、生态等支持&…

Keil系列教程03_主窗口和工具栏详细说明

1写在前面 本文先让大家简单认识一下Keil的主窗口界面&#xff0c;然后再进一步认识Keil的文件、编译和调试工具栏。 Toolbars工具栏就是在菜单下面的两行快捷图标按钮&#xff0c;这些快捷按钮之所以在工具栏里面&#xff0c;在于它们使用的频率较高。比如保存按钮、编译按钮…

ChatGPT智能AI对话软件

ChatGPT智能AI的市场前景非常广阔&#xff0c;因为随着人工智能技术的不断发展和应用&#xff0c;人们对于智能AI对话系统的需求也越来越大。未来&#xff0c;智能AI对话系统将在各个领域得到广泛应用&#xff0c;例如智能客服、智能家居、自动驾驶等等&#xff0c;这些都有助于…

STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机

STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机(HAL库) 1 电路图 2 TB6612简介 TB6612是双驱动&#xff0c;可同时驱动两个电机 STBY&#xff1a;接单片机的IO口清零电机全部停止&#xff0c;置1通过AIN1 AIN2&#xff0c;BIN1&#xff0c;BIN2 来控制正反转…

linux下静态库和动态库的制作

一.静态库的制作 linux下库的命名规则&#xff1a;在linux下以libXXX.a为命名&#xff0c;lib&#xff08;library&#xff09;前缀是固定的&#xff0c;代表这个是库。接下来介绍静态库的制作流程。 1.1通过gcc编译获得.o文件 一般源程序经过预处理完成头文件和宏的展开&am…

运行时内存数据区之虚拟机栈——局部变量表

这篇内容十分重要,文字也很多,仔细阅读后,你必定有所收获! 基本内容 与程序计数器一样&#xff0c;Java虚拟机栈&#xff08;Java Virtual Machine Stack&#xff09;也是线程私有的&#xff0c;它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型&#xf…

我想知道,就目前形势而言,学java好还是C++好?

前言 就现实点看看&#xff0c;可以对比现在Java和C的市场占有率&#xff0c;可以看到&#xff0c;到目前为止&#xff0c;Java在国内编程语言的市场仍然是占据着大头&#xff0c;在招聘当中Java的人数占有率仍然是遥遥领先于C&#xff0c;Java目前开阔的市场以及其巨大的岗位…

阿里,字节,拼多多,B站挨个面试一遍,你们猜哪个待遇最高?

我面试的是软件测试岗位&#xff0c;去年中旬的时候从原来的公司离职了&#xff0c;不是工作不好&#xff0c;而是公司发展速度太慢&#xff0c;自己干了几年&#xff0c;也没有太大的成长。以我目前的工作经验和实力&#xff0c;我认为准备一两个月&#xff0c;进大厂不是什么…

VS2022下载安装与基本使用(写C语言)

最近遇到一种问题&#xff0c;就是想要写一写C语言的代码&#xff0c;但是网页编辑器功能不全&#xff0c;GCC需要安装Liunx系统&#xff0c;VS又体量太大过于复杂&#xff0c;用keil又需要连接硬件&#xff0c;所以比较纠结。 工作中通常使用的是Keil&#xff0c;但是如果有时…

有记忆功能的动态通讯录

目录 前言1.进行文件操作的改造1.1contact.h的改造1.2contact.c的改造1.3test.c的改造 2.带文件操作的动态通讯录源码2.1contact.h2.2contact.c2.3test.c 总结 前言 前面我们一起学习的动态通讯录&#xff0c;一退出此程序联系人的信息就不见了&#xff1b;学习了文件操作操作后…

cocos creator 中使用web worker

1.应用场景&#xff1a;一些阻塞线程的方法可以放到worker里面去执行&#xff0c;不影响主线程&#xff0c;避免页面卡顿。 啊&#xff0c;有人就会说了&#xff0c;setTimeout不就可以了吗&#xff0c;还有什么async... JS本身就是单线程设计的&#xff0c;不管你是setTimeo…

EIGRP配置邻居关系详解

1.2 EIGRP 邻居关系 1.2.1 实验目的 通过 EIGRP 邻居建立的相关实验&#xff0c;学习到如何调整 EIGRP 的 HELLO 和 HOLD 时间&#xff0c;使用 被动接口阻止不必要的邻居关系&#xff0c;认证 EIGRP 邻居&#xff0c;静态邻居的配置以及哪些参数影响 EIGRP 邻居建立。 1.2.…

【数据库】Redis数据类型详解

目录一、5种基本数据类型1. String2. List3. Hash4. Set5. ZSet二、3种特殊类型1. Bitmap2. HyperLogLog3. Geospatial index一、5种基本数据类型 Redis 共有 5 种基本数据结构&#xff1a;String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Set&#…

【CVPR轻量级网络】- 追求更高的FLOPS(FasterNet)

文章目录 题目&#xff1a;摘要1 介绍CNN中FLOPs的计算 2 相关工作3 PConv和FasterNet的设计3.1 偏卷积作为基本算子&#xff08;PConv)3.2 PConv后接PWConv3.3 FasterNet作为通用骨干 4实验 题目&#xff1a; Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Netw…