D3 Handling Events

this代表的就是当前元素

    <p id = "test">click</p>
    <script>
        // var para = document.getElementById("test")
        // para.onclick = function(){this.innerHTML = "Done"}

        d3.select("#test")
            .on("click",function(){d3.select(this).text("Done")})
    </script>

拖拽

    <script>
        var circles = [
            {cx:150, cy:220, r:30},
            {cx:250, cy:200, r:30}
        ]
        var svg = d3.select("body").append("svg").attr("width",300).attr("height",300)
        
        var drag = d3.behavior.drag()
                    .origin(function(d,i){return {x:d.cx ,y:d.cy}})
                    .on("dragstart",(d)=>{console.log("拖拽开始")})
                    .on("dragend",(d)=>{console.log("拖拽结束")})
                    .on("drag",function(d){d3.select(this)
                                .attr("cx",d.cx = d3.event.x)
                                .attr("cy",d.cy = d3.event.y)}
                        )
        
        svg.selectAll("circle")
            .data(circles)
            .enter()
            .append("circle")
            .attr("cx",(d)=>d.cx)
            .attr("cy",(d)=>d.cy)
            .attr("r",(d)=>d.r)
            .attr("fill","black")
            .call(drag)


    </script>

缩放行为

    <script>
        var circles = [
            {cx:150, cy:220, r:30},
            {cx:250, cy:200, r:30}
        ]
        var svg = d3.select("body").append("svg").attr("width",300).attr("height",300)

        var zoom = d3.behavior.zoom()
                    .scaleExtent([1,10])
                    .on("zoom",function(d){
                        d3.select(this).attr("transform","translate("+d3.event.translate+")"+"scale("+d3.event.scale + ")")
                    })

        var g = svg.append("g")
                    .call(zoom);

        g.selectAll("circle")
            .data(circles)
            .enter()
            .append("circle")
            .attr("cx",(d)=>d.cx)
            .attr("cy",(d)=>d.cy)
            .attr('r',(d)=>d.r)
            .attr('fill','black')
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值