D3.js 动画 过渡效果 (V3版本)
var width = 600;
var height = 400; var svg = d3.select("#body")
.append("svg")
.attr("width",width)
.attr("height",height) svg.append("rect")
.attr("fill","yellow")
.attr("x",100)
.attr("y",100)
.attr("width",100)
.attr("height",30)
.transition()
.attr("width",300)
var rect = svg.append("rect")
.attr("fill","yellow")
.attr("x",100)
.attr("y",100)
.attr("width",100)
.attr("height",30) //打印rect
console.log(rect) //rect是选择集 //启动过渡效果
var rectTran = rect.transition() //打印rectTran
console.log(rectTran) //rectTran是一个过渡对象
var rect = svg.append("rect")
.attr("fill","yellow")
.attr("x",100)
.attr("y",100)
.attr("width",100)
.attr("height",30)
var rectTran = rect.transition()
.delay(500) //延迟500ms再开始
.duration(1000) //过渡时长为1000ms
.ease("blunce") //过渡样式
.attr("width",300) //目标属性
var rect = svg.append("rect")
.attr("fill","yellow")
.attr("x",100)
.attr("y",100)
.attr("width",100)
.attr("height",30) var rectTran = rect.transition() //开始一个过渡
.attr("width",300) //目标宽度为300
.transition() //开始一个过渡
.attr("height",300) //目标高度为300
.transition() //开始一个过渡
.attr("width",100) //目标宽度为100
.transition() //开始一个过渡
.attr("height",100) //目标高度为100
.attr("width",100)
.transition()
.attr("width",300)
var rect = svg.append("rect")
.attr("fill","yellow")
.attr("x",100)
.attr("y",100)
.attr("width",100)
.attr("height",30) var rectTran = rect.transition()
.duration(2000)
.attrTween("width",function(d,i,a){
return function(t){
return Number(a) + t * 300
}
})
svg.append("rect")
.attr("fill","yellow")
.attr("x",100)
.attr("y",100)
.attr("width",100)
.attr("height",30)
.transition()
.duration(2000)
.attr("fill",'red')
svg.append("rect")
.attr("fill","yellow")
.attr("x",100)
.attr("y",100)
.attr("width",100)
.attr("height",30)
.transition()
.duration(2000)
.attr("width",300) var text = svg.append("text")
.attr("fill","white")
.attr("x",150)
.attr("y",100)
.attr("dy","1.2em")
.attr("text-anchor","end")
.text(100) var initx = text.attr("x")
var initText = text.text() var textTran = text.transition()
.duration(2000)
.tween("text",function(){
return function(t){
d3.select(this)
.attr("x",Number(initx) + t * 250 )
.text(Math.floor(Number(initText) + t * 300 ))
}
})
//当t为0时,函数体力的操作是:
d3.select(this)
.attr("x",150 + 0 * 250)
.text(Math.floor(100 + 0 * 300)) //当t为1时,函数体里的操作是:
d3.select(this)
.attr("x",150 + 1 * 250 )
.text(Math.floor(100 + 1 * 300))
var rect = svg.append("rect")
.attr("fill","yellow")
.attr("x",100)
.attr("y",100)
.attr("width",100)
.attr("height",30) rect.transition()
.attr("width",0)
.remove()
D3.js 动画 过渡效果 (V3版本)的更多相关文章
- D3.js 线段生成器 (V3版本)
线段生成器 与线段生成器相关的方法: d3.svg.line() //创建一个线段生成器. line(data) //使用线段生成器绘制data数据. line.x([x]) //设置或获取线 ...
- D3.js 弦生成器(V3版本)
弦生成器(Chord Generator) 弦生成器(Chord Generator)根据两段弧来绘制弦,共有五个访问器,分别为source().target().radius().startAn ...
- D3.js 区域生成器 (V3版本)
区域生成器(Area Generator) 区域生成器(Area Generator)用于生成一块区域,使用方法与线段生成器类似.线段生成器地址:数据访问器有x().x0().x1().y().y ...
- D3.js(v3)+react 制作 一个带坐标与比例尺的柱形图 (V3版本)
现在用D3.js + react做一个带坐标轴和比例尺的柱形图.我已经尽力把代码全部注释上了,最后我也会把完整柱形图代码奉上.如果还有疑惑的,可以去翻看一下我之前介绍的方法,以下方法都有介绍到. 还有 ...
- D3.js的v5版本入门教程(第十二章)—— D3.js中各种精美的图形
D3.js的v5版本入门教程(第十二章) D3中提供了各种制作常见图形的函数,在d3的v3版本中叫布局,通过d3.layout.xxx,来新建,但是到了v5,新建一个d3中基本的图形的方式变了(我也并 ...
- D3.js的v5版本入门教程(第十章)
在这一章我们干点有趣的事——让我们上一章绘制的图表动起来,这样岂不是很有意思 为了让图表动起来,我们还是需要以下新的知识点 .attr(xxx) .transition() .attr(xxx),tr ...
- D3.js使用过程中的常见问题(D3版本D3V4)
目录 一.学习D3我必须要学习好SVG矢量图码? 二.如何理解D3给Dom节点绑定数据时的Update.Enter和Exit模式 三.D3绑定数据时用datum与data有什么不一样? 四.SVG图中 ...
- d3.js制作连线动画图和编辑器
此文章为原创文章,原文地址:https://www.cnblogs.com/eagle1098/p/11431679.html 连线动画图 编辑器 效果如上图所示.本项目使用主要d3.jsv4制作,分 ...
- D3.js的v5版本入门教程(第十三章)—— 饼状图
D3.js的v5版本入门教程(第十三章) 这一章我们来绘制一个简单的饼状图,我们只绘制构成饼状图基本的元素——扇形.文字,从这一章开始,内容可能有点难理解,因为每一章都会引入比较多的难理解知识点,在这 ...
随机推荐
- php的闭包函数use的使用
PHP在默认情况下,匿名函数不能调用所在代码块的上下文变量,而需要通过使用use关键字. function getMoney() { $rmb = 1; $dollar = 6; $fun ...
- redis的一些特性
Redis内存回收 Redis复制原理 Redis提供的高可用方案 Redis提供的分片算法 Redis迁移
- Optparse 简介
optparse 这个库的主要作用是可以用为脚本提供传递命令参数功能 一个简单的例子 def main(): parser = OptionParser(usage = "usage: %p ...
- ASP.NET MVC 学习笔记之View 和Redriect的区别
首先先说一下Redriect 和RedirectToAction 两个没什么区别,都是向浏览器发送302 Found相应,再有浏览器向对应的url进行请求 只是参数的意义不同而已 再说Redirect ...
- 项目案例之Pipeline流水线及流水线发布PHP项目(二)
项目案例之Pipeline流水线及流水线发布PHP项目(二) 链接:https://pan.baidu.com/s/1NZZbocZuNwtQS0eGkkglXQ 提取码:z7gj 复制这段内容后打开 ...
- 爬虫(十二):图形验证码的识别、滑动验证码的识别(B站滑动验证码)
1. 验证码识别 随着爬虫的发展,越来越多的网站开始采用各种各样的措施来反爬虫,其中一个措施便是使用验证码.随着技术的发展,验证码也越来越花里胡哨的了.最开始就是几个数字随机组成的图像验证码,后来加入 ...
- 为何在新建STM工程中全局声明两个宏
在uVision中新建STM32工程后,需要从STM32标准库中拷贝标准外设驱动到自己的工程目录中,此时需要在工程设置->C/C++选项卡下的Define文本框中键入这两个全局宏定义. STM3 ...
- vue element-ui NavMenu错位问题
原因:子菜单全部打开后太长超过100% 解决方法:设置只能点击打开当前的菜单
- Qt【Could not parse stylesheet of object 0x7f7990 】
查找自己所写的 setstylesheet(); 然后看里面的括号标点什么的有没有多余的,删除即可解决.
- Delphi中的线程类(转)
Delphi中的线程类 (转) Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对 TThread类的几个成员作一简单介绍,再说明一下 ...