D3 drag行为

d3.behavior.drag():创建一个新的拖动行为。

drag.on(type[,listener]):

type:开始,拖动,结束。

如果没有listener,则为type指定已注册的listener。但我测试时,如果不加listener时会出错。

drag会返回x,y,可根据origin来修改,在局部坐标系统(svg)。dx,dy是相对于开始坐标的。

拖动期间,浏览器的默认行为会被阻止,比如点击事件。也可以阻止冒泡。

drag.origin([origin]):决定拖动开始的位置。

不设置的话会出错?不会,不设置就是不使用这个方法,而不是.origin()。

如果为空,则元素拖动开始的位置为鼠标的位置;如果设置了,就正常了。

当绑定在元素上的数据时用x,y的object来表示的话,源存取器经常用function(d){return d;},但是没提能改成什么样的?

20140430

svg:svg:sof上的解释是,前者是namespace,后者是tag,D3只支持几种命名空间。不是selection的意思。

用namespace可以区分其他基于xml的语言;xhtml,svg会有相同的标签名,用namespace来区分。

drag:两个比较好的例子:http://bl.ocks.org/mbostock/1557377;https://gist.github.com/enjalot/1378144;

问题:同样是移动,为什么listener不一样呢?

D3 drag行为,码迷,mamicode.com

时间: 2024-08-13 04:21:05

D3 drag行为的相关文章

vue+ D3+drag

import template from './explore.vue' //import dataJson from './data.json' import * as d3 from 'd3' import Draggabilly from 'draggabilly' export default { ...template, name: 'explore', data(){ return { dataJson: { "name":"中国", "chi

D3.js 入门学习(二) V4的改动

//d3.scan /* 新的d3.scan方法对数组进行线性扫描,并根据指定的比较函数返回至少一个元素的索引. 这个方法有点类似于d3.min和d3.max. 而d3.scan可以得到极值的索引而不仅仅是计算极值. */ var a1 = [1,3,5,2,9]; var i = d3.scan(a1,function(a,b){ return b-a; // 返回最大值的索引, a-b; 返回最小值的索引 }); console.log(i); //4; //d3.ticks d3.tick

[D3] Add image to the node

We can create node with 'g' container, then append 'image' to the nodes. // Create container for the images const svgNodes = svg .append('g') .attr('class', 'nodes') .selectAll('circle') .data(d3.values(nodes)) .enter().append('g'); // Add image to t

d3.js制作条形时间范围选择器

此文章为原创文章,原文地址:https://www.cnblogs.com/eagle1098/p/12146688.html 效果如上图所示. 本项目使用主要d3.js v4制作,可以用来选择两年的时间范围,两端按钮切换年,在时间轴上标注可以选择的时间范围和关键时间点.时间数据可以在前端配置,也可以从后端请求. 此程序相对比较简单,主要涉及d3的比例尺和拖动处理. 1)d3的比例尺其实就是把一个范围的数据映射到另一个范围的数据上 此处,我们使用线性比例尺:d3.scaleLinear() 它可

进口货规范的地方规划局可

http://www.gettyimages.cn/newsr.php?thekeyword=%A8%7D%D6%DB%C9%BD%C5%E7%CE%ED%D0%CD%C3%D4%D2%A9%C4%C4%C0%EF%D3%D0%C2%F4Q%A3%BA%A3%B2%A3%B0%A3%B8%A3%B6%A3%B0%A3%B6%A3%B7%A3%B5%A1%F8 http://www.gettyimages.cn/newsr.php?thekeyword=%A8%8E%CC%A8%D6%DD%C5%

女宇航员奶奶家

http://shike.gaotie.cn/zhan.asp?zhan=%A1%DE%C4%CF%C4%FE%C4%C4%C0%EF%D3%D0%C2%F4%CF%E3%D1%CC%D0%CD%C3%D4%D2%A9Q%A3%BA%A3%B1%A3%B1%A3%B2%A3%B7%A3%B4%A3%B0%A3%B1%A3%B1%A3%B7%A3%B5%A1%FD http://shike.gaotie.cn/zhan.asp?zhan=%A6%E6%C1%F8%D6%DD%C4%C4%C0%EF

【 D3.js 进阶系列 — 6.0 】 拖拽的应用(Drag)

拖拽(Drag)是交互式中很重要的一种,本文将讲解拖拽的使用方法. 1. drag的定义 D3中可用 d3.behavior.drag() 来定义 drag 行为. var drag = d3.behavior.drag() .on("drag", dragmove); function dragmove(d) { d3.select(this) .attr("cx", d.cx = d3.event.x ) .attr("cy", d.cy =

D3 API总览

学习外国的框架,零零星星和点点滴滴是不行的,还是要有一个高屋建瓴总揽全局的看法,所以就看看D3都有哪些方法. core:selection, transition, arrays, math, loading external resources, string formatting, csv formatting, localization(?), colors, Namesapce, Internal(?) scales:quantitative, ordinal svg:shapes, a

用D3画简单的力导图

由于10月国庆后,换了新工作,需要做一些可视化的图表,所以在这里整理一下,其中的一部分,今天就先整理力导图. 如上图所以,要完成这么一个力导图,需要的步骤如下: var forceTree3 = function(setting) { var relations = setting.relations, links = setting.links, selector = setting.selector var nodes = {} // 上传到服务器需要修改 var pathUrl = '/'