Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js"></script>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style>
    #g-1101 rect {
      fill: red;
    }
  </style>
</head>
<body>
  <button class="pan">Pan</button>
</body>
</html>
 
(function(){
  
 var svg, g; $.get('http://layersofcomplexity.com/__fp.svg', function(svg){
   $('body').append($(svg));
   init();
  },'text');
  
  function init() {
    
    console.log('init');
 
   svg = d3.select('svg');
   g = d3.select('svg > g');
    
    var zoom = d3.behavior.zoom()
    .translate([0, 0])
    .scale(1)
    .scaleExtent([1, 8])
    .on("zoom", zoomed);
    
    svg
    .call(zoom)
    .call(zoom.event);
    
    $('.pan').on('click', function(){
//       var id = '#g-1011';
      var scale = 4;
      var bbox = $('#g-1101')[0].getBBox(); 
//       d3.select(id).node().getBBox();
      console.log(bbox);
      var x = bbox.x-((bbox.width));
      var y = bbox.y-((bbox.height));
      var translate = [-(x*(scale-1)),-(y*(scale-1))];
      g.transition().duration(750) .call(zoom.translate(translate).scale(scale).event);
    });
 
  }
  
  function zoomed() {
    g.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}
 
})();
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers