d3.js zoom 事件

d3.js zoom 事件

冷色系微风爱丶

d3.js v3  英文文档 https://github.com/d3/d3-3.x-api-reference/blob/master/Zoom-Behavior.md

d3.js v4 中文文档  https://d3js.org.cn/document/d3-zoom/#zoom-transforms
 

d3.behavior.zoom() 调用d3.js 的zoom 事件 

 
  1. var zoom = d3.behavior.zoom();

  2. selection.call(zoom);

zoom.scaleExtent([extent]) 这个是鼠标缩放的距离 [0.001,10000]
zoom.scaleExtent([0.001, 10000])

zoom.on('zoomstart')   zoom 事件执行前 只用过 鼠标变小手 但是有bug  在缩放的时候小手也变。

selection.on(".zoomstart", null);

zoom.on('zoom')  执行zoom 事件 

selection.on(".zoom", null);

zoom.on('zoomend')  zoom 事件执行后

selection.on(".zoomend", null);

_this.zoom.translate([100, 20])  zoom 事件 translate 默认位置  保持zoom事件 与 要执行zoom 事件元素的位置一致

zoom.translate([100, 20])

  _this.zoom.scale([1])  这个是 缩放 scale

zoom.scale([0.5])

要执行zoom 事件的元素 .call(zoom) 调用zoom 事件

 
  1. selection

  2. .call(zoom)

要执行zoom 事件的元素 .on('dblclick.zoom', null) 禁用双击放大

 
  1. selection

  2. .call(zoom)

  3. .on("dblclick.zoom", null);

要执行zoom 事件的元素 .on('wheel.zoom', null)   单独将缩放的滚轮事件取消

 
  1. selection

  2. .call(zoom)

  3. .on("wheel.zoom", null);

_this.zoom = d3.behavior.zoom()
    .scaleExtent([0.001, 10000])
    .on('zoomstart', () => { // zoom 事件发生前 将变小手加给svg 而不是g g不接受事件
        d3.select('svg.svgTree').style('cursor', 'pointer')
    }).on('zoom', function() {
        _this.inner.attr('transform',
            'translate(' + d3.event.translate + ')' +
            'scale(' + d3.event.scale + ')'
        )
    }).on('zoomend', () => { // zoom 事件发生前
        d3.select('svg.svgTree').style('cursor', 'default')
    })

_this.inner = d3.select('.tree').append('svg')
.attr('class', 'svgTree')
.call(_this.zoom)
.append('g')
.style('cursor', 'pointer')

// .attr('transform', 'translate(' + 200 + ', ' + 20 + ')')
// _this.zoom.translate([200, 20])
.attr('transform', 'translate(' + _this.width / 3 + ', ' + _this.height / 8 + '), scale(' + 1 + ')')
_this.zoom.translate([_this.width / 3, _this.height / 8])
_this.zoom.scale([1])

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值