当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


d3.js zoom.transform()用法及代码示例


D3.js中的zoom.transform()函数用于将所选元素的当前缩放变换设置为指定的变换。

用法:

zoom.transform(selection, transform[, point]);

参数:该函数接受上述和以下描述的单个参数:

  • selection:该参数可以是选择或转换。
  • transform:该参数可以定义为缩放变换或函数。

返回值:此函数返回缩放变换。

以下示例程序旨在说明D3.js中的zoom.transform()函数



范例1:

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="utf-8"> 
    <script src="https://d3js.org/d3.v4.min.js">  
    </script>  
    <style> 
        svg text {   
            fill:green;   
            font:20px sans-serif;   
            text-anchor:center;   
        }   
          
        rect { 
          pointer-events:all; 
        } 
    </style> 
</head>   
<body>  
    <center> 
        <h1 style="color:green;">  
            Geeksforgeeks  
        </h1>  
      
        <h3>D3.js | zoom.transform() Function</h3> 
          
        <button id="reset">Reset</button><br/> 
          
        <svg></svg> 
          
        <script> 
            var width = 400; 
            var height = 200; 
              
            var svg = d3.select("svg") 
              .attr("width", width) 
              .attr("height", height); 
                
            // The scale used to display the axis. 
            var scale = d3.scaleLinear() 
              .range([10, width-20]) 
              .domain([0, 100]); 
               
            var shadowScale = scale.copy(); 
              
            var axis = d3.axisBottom() 
              .scale(scale); 
                
            var g = svg.append("g") 
              .attr("transform", "translate(0, 50)") 
              .call(axis); 
                
            // Standard zoom behavior:
            var zoom = d3.zoom() 
              .scaleExtent([1, 10]) 
              .translateExtent([[0, 0], [width, height]]) 
              .on("zoom", zoomed); 
               
            // Call the Zoom. 
            var rect = svg.append("rect") 
              .attr("width", width) 
              .attr("height", height) 
              .attr("fill", "none") 
              .call(zoom); 
                          
            d3.select("#reset") 
              .on("click", function() { 
                // Create an identity transform 
                var transform = d3.zoomIdentity; 
                  
                // Apply the transform:
                rect.call(zoom.transform, transform); 
              }) 
            function zoomed() { 
              var t = d3.event.transform; 
              scale.domain(t.rescaleX(shadowScale).domain()); 
              g.call(axis); 
            } 
        </script>  
    </center> 
</body>  
</html>

输出:

范例2:

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="utf-8">     
    <script src="https://d3js.org/d3.v4.min.js">  
    </script>  
    <style> 
        rect { 
          cursor:pointer; 
        } 
    </style> 
</head>  
<body>  
    <center> 
        <h1 style="color:green;">  
            Geeksforgeeks  
        </h1>  
      
        <h3>D3.js | zoom.transform() Function</h3> 
          
        <button>Trigger Zoom</button> <br/> 
        <span> Zoom Level:</span> 
        <span id="GFG"></span><br/> 
          
        <svg></svg> 
           
        <script> 
            var scale = d3.scaleSqrt()   
                .range(["green", "purple", "blue"]) 
                .domain([1, 40, 1600]); 
              
            var zoom = d3.zoom()         
                .on("zoom", zoomed) 
                .scaleExtent([1, 1600]) 
              
            var rect = d3.select("svg") 
                .append("rect") 
                .attr("width", 400) 
                .attr("height", 300) 
                .attr("fill", "green") 
                .call(zoom); 
              
            rect.call(zoom.transform, d3.zoomIdentity); 
              
            d3.select("button").on("click", function() { 
                var newTransform = d3.zoomIdentity.scale(100); 
                rect.call(zoom.transform, newTransform); 
            }) 
              
            // Zoom function:
            function zoomed(){ 
              var k = d3.event.transform.k; 
              rect.attr("fill", scale(k)); 
              d3.select("#GFG").text(k); 
            } 
        </script>  
    </center> 
</body>  
</html> 

输出:




相关用法


注:本文由纯净天空筛选整理自SHUBHAMSINGH10大神的英文原创作品 D3.js zoom.transform() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。