D3 behavior
2022-04-21
behavior,即“行为
”,他主要包含了d3.behavior.drag
以及d3.behavior.zoom
来分别实现和处理拖拽和缩放的交互形式。
click
在先介绍 behavior
前,我们需要了解到基本的鼠标事件,鼠标事件主要分为6
种,主要是辨别鼠标的按下、触点
等两种:
ID | DA |
---|---|
click | 鼠标单击某元素时(被 mousedown(鼠标按下) and mouseup(鼠标松开) 组合在一起) |
mouseover | 当接收到光标触点时 …… |
mouseout | 当光标从 …… 移出时 |
mousemove | 当鼠标移动 时 …… |
mousedown | 当鼠标 按下 时 …… |
mouseup | 当鼠标按下松开 时 …… |
在下述的 code 中我们组要实现了鼠标的按下(mousedown \ click)、鼠标松开(mouseup)、光标接触(mouseover)、光标移出(mouseout)
的例子,并配合过渡效果
来分别的进行显示,需要值得注意的是click与 mousedown
并不是完全一样的,可以从下述 code 看出差别。
1 | var padding = { |
drag
拖拽 (drag
) 主要通过使用d3.behavior.drag
来进行实现,是指通过鼠标将元素从一个位置到另一位置,通常主要分为按下鼠标、鼠标移动、鼠标松开
等三个步骤,D3 为此提供了一种更为简单方法 :
ID | DA | FA |
---|---|---|
d3.behavior.drag() | 创建一个拖拽 | |
drag.on(type[,listener ]) |
设置时间监听器,主要支持三种类型,分别为:“dragstart(拖拽开始)、drag(拖拽中)、dragend(拖拽结束) “,而listener 是监听函数,默认返回当前指定事件监听器 |
|
drag.origin() | 设置拖拽起点,可以使得鼠标与被平移元素以相对不变的偏移量进行移动 ,如果设置了起点,那么将会在鼠标按下(mousedown) 事件发生时进行调用 |
|
on.dragstart | 监听 drag 拖动是否开始 |
|
on.dragend | 监听 dran 拖动是否结束 |
在下述的 code 中,我们主要通过使用drag
来进行移动,当移动的时候将数据cy\cx
数据赋值到当前svg
图像的x\y
轴中,并通过使用dragstart
与dragend
来进行监听drag
是否被拖动,从而添加过渡属性
。
1 | /* 基本 svg 样式 */ |
zoom
缩放(zoom
)是在数据可视化中较为常用的小细节之一,因此 d3 为我们提供了d3.behavior.zoom
方法来用于构建缩放行为。
ID | DA | FA |
---|---|---|
d3.behavior.zoom | 构建一个缩放行为 | |
zoom(selection) | 将此行为应用到选择集中 | |
zoom.translate() | 设置缩放的平移量,默认为0 ,并返回当前的平移向量 |
|
zoom.scale() | 设置初始放大、缩小 量的最大值,默认为0~∞ |
|
zoom.center() | 设置缩放的中心点 ,默认为鼠标的位置 |
|
zoom.x() | 设置一个 x 方向比例尺,比例尺会随着放大、缩小改变定义域 |
|
zoom.y() | 设置一个 y 方向比例尺,比例尺会随着放大、缩小改变定义域 |
|
zoom.on | 设置事件类型 ,主要分为:”zoomstart(缩放开始)、zoom(正在缩放)、zoomend(缩放结束) “三种 |
通过on.zoom
来计算出缩放的开始并因此得到圆的大小和坐标信息,之后绑定数据进行绘制,在这其中主要通过使用scaleExtent
来设置缩放的倍数,其方法主要分为最小值、最大值
,下述code中的缩放最大为2
倍,最小为1
倍,并设置基础的比例尺
,通过缩放来观察比例尺的缩放变化
1 | /* 基本 svg 结构 */ |