d3.js zoom 事件

本文分享了d3.js v3英文文档和v4中文文档链接,详细介绍了d3.js的zoom事件相关操作,包括调用zoom事件、事件执行前后的处理,以及设置translate默认位置、缩放scale等,还提及禁用双击放大和取消滚轮缩放事件。

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 事件 

var zoom = d3.behavior.zoom();
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 事件

selection
    .call(zoom)

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

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

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

selection
    .call(zoom)
    .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])

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值