介绍

通过D3可以用很简单的代码实现很炫酷的效果,这个动画主要通过鼠标的移动为驱动的动画,它分为两个部分,一个是获得鼠标或触摸的位置坐标,一个是圆的生成和消散动画.

示例:https://huiyanpohun.github.io/DataVisualization/circle.html

填充一个SVG

// 在body中填充一个svg标签
var svg = d3.select("body").append("svg").attr("width", width).attr("height", height);

这个不用多讲,在body中填充一个SVG标签,设置一下宽高属性

在SVG中填充一个矩形

在SVG中填充一个矩形主要是为了方便监听鼠标移动或者触摸移动事件

// 在svg中填充一个rect矩形对象
var rect = svg.append("rect").attr("width", width).attr("height", height)// 监听是否为手机触摸或者鼠标移动// partical是一个回调函数.on("ontouchstart" in document ? "touchmove" : "mousemove", partical);//.on("click",partical);

回调函数

回调函数是这个例子中最重要的一个函数,鼠标每移动一次,或者屏幕每触摸移动一次就会调用一次这个函数

// 回调函数,鼠标每移动一次,调用函数一次
function partical() {/*** 通过d3.mouse(this)可以得到鼠标的位置坐标* 得到的参数是数组类型的* x = param[0]* y = param[1]*//*** tips:* hsl颜色模式通过色度:h,饱和度:s和亮度:l来定义一种颜色* h的取值范围为[0,360],s的取值范围为[0,1],l的取值范围为[0,1]*/console.log("i==>"+i);var param = d3.mouse(this);svg.insert("circle", "rect").attr("cx", param[0]).attr("cy", param[1]).attr("r", 1e-6)// 描边.style("stroke", d3.hsl((i = (i + 1) % 360), 1, 0.5))// 描边的透明度.style("stroke-opacity", 1)// 平滑过渡.transition()// 持续时间.duration(2000)// 缓动函数,设定如何属性如何变化,在这个例子中.ease(/**function (x) {return x*x;}**/Math.sqrt()).attr("r", 100).style("stroke-opacity", 1e-6).remove();d3.event.preventDefault();
}

接下来说一下比较重要的操作符

transition()

过渡操作符,过渡操作符是操作元素过渡动画的操作符(废话),这个操作的元素是是什么呢,当然就是svg中插入矩形的圆了,刚才说回调函数在鼠标每一次移动的时候都会调用一次,也就是鼠标每移动一次都会插入一个圆,(当然这个圆最后会通过remove()操作符移除掉),当使用呢这个操作符以后的就是设置如何过渡的呢

duration()

动画是时间的函数,当然需要一个持续时间,这个持续时间传入的参数是以毫秒为单位

ease()

这个操作符其实有点难说,可以把它看作为速度,持续时间可以看作是路程,x是一个变量它的范围是[0,1],路程是一定的,如果是线性的,就是匀速直线运动,当然也可以是加速运动,这个取决于你传入的函数.比如我要将圆从0变化到100,可以随时间匀速的变化到一百,也可以在某段时间变化得很快,一段时间变化得很慢.

transition.attr()

这个是要变化的属性,在这个例子中r的大小会变化,半径从1e-6变化到100

transition.style()

要变化的样式,在这个例子中描边的透明度(stroke-opacity)发生了变化从1变化到了1e-6

??正文结束??

OMG Partical Practice相关推荐

  1. HDU1089-1096 A+B for Input-Output Practice 系列问题(输入输出格式练习)

    HDU1089 A+B for Input-output Practice (1) 问题描述:每行输入一对整数a和b,每行对应输出a与b的和. Sample Input 1 5 10 20 Sampl ...

  2. Programmer of Practice Manual

    这是我以前再读研究生的时候写的东东,希望搞计算机的同学,教计算机本科生学习技术的文章(非算法类) 粘在这里纪念一下. 大一寒假 结构化编程基础: 图书:<How to C> 实践过程:完成 ...

  3. Database design best practice(1):关于primary key及其它

    1. The job of the primary key is to uniquely identify records, not to store business data ; any use ...

  4. 《Git in Practice》作者访谈:关于Git的八个问题

    Mike McQuaid的著作<Git in Pratice>是一份具有动手实践性的指导,它从实践性的角度介绍了Git,提供了超过60种在操作Git库时会使用到的技巧和命令,并且为有经验的 ...

  5. Remoting Practice Sample

    Remoting Practice Sample 这两天研究了一下Remoting, 改了MSDN 的例子. 那个例子不是很方便. 我做了如下改进: 整个sample做成一个solution 用了wi ...

  6. ATPG Practice ATPG Practice II

    文章目录 General ATPG Flow ATPG DRC example clock to data ATPG setting delay test的两种方法 single capture do ...

  7. DFT实训教程笔记2(bibili版本)- Scan synthesis practice

    文章目录 Scan synthesis practice 本博文是博主记录DFT实训教程的笔记版本,此笔记并没有对所有的知识进行记录,仅仅以自身的认知水平,来记录了一些部分笔记并加上了自己的理解. S ...

  8. Best practice for JVM Tuning[转]

    原文地址:https://backstage.forgerock.com/knowledge/kb/article/a35746010 JVM tuning considerations Before ...

  9. OMG: daily scrum six

    Member Today's task Tomorrow's task Note Rui Task:620 model view & binding 637 637 Agenda Data B ...

最新文章

  1. 主题:windows 如何查看端口占用情况?
  2. Lync 小技巧-51-Lync 2013-不加域-客户端-1-下载-证书-信任链
  3. 计算机专业PS模版,计算机专业PS范例十一
  4. libsvm回归参数寻优cgp_【lightgbm/xgboost/nn代码整理二】xgboost做二分类,多分类以及回归任务...
  5. 【Antlr】Antlr将词法符号送入不同的通道
  6. Python 爬虫分析豆瓣 TOP250 告诉你程序员业余该看什么书?
  7. SELinux处理命令
  8. C# 简单连接数据库并执行SQL查询语句
  9. AI量化交易(二)——Tushare财经数据框架
  10. Android开发史上最全笔试面试题
  11. Android 裸眼3D效果View
  12. chrome Android 前进 后退,停止Chrome后退/前进两根手指滑动
  13. mysql中复杂sql语句之多重if嵌套语句
  14. 发改委印发三年行动计划 智能机器人有望成为下一片蓝海
  15. 美团后台开发秋招面经汇总(更新至2021-08-13)
  16. SpringMVC一:概述、环境搭建及开发流程
  17. python的整数与浮点数
  18. 日常工作中遇到的那些坑
  19. 第3讲--在linux4下安装tuxedo中间件
  20. 查询oracle授权信息,oracle授权查询

热门文章

  1. html float属性both,CSS——float属性及Clear:both备忘笔记
  2. 2015网易游戏校园招聘笔试题 游戏插件研发岗
  3. Access 类型转换函数
  4. 【品牌推广公司】品牌营销,奇龙十三哥浅谈如何进行有效的口碑传播
  5. 谁打碎了花瓶?数组的应用
  6. Android开发类似微信九格宫图片
  7. Linux shell脚本执行SQL
  8. Matlab图像频域处理
  9. KingbaseES R6 集群通过备库clone在线添加新节点
  10. react如何使用dva