Javascript 缩放svg上d3转换的Safari错误

Javascript 缩放svg上d3转换的Safari错误,javascript,html,css,d3.js,svg,Javascript,Html,Css,D3.js,Svg,我一直在研究d3js在缩放背景svg上的转换。然而,在Safari(10.0.1)中,我看到了在转换发生时出现的人工制品 在这个例子中,人工制品切断了背景圆圈(在Safari中打开first fiddle) 除非强制进行新渲染(例如,调整窗口大小),否则这些人工制品将保留 Chrome和Firefox没有显示这个问题 下面是一个小例子的提琴(在Safari中打开): 代码在处理缩放: var N = 200; var wh = 600; var r = 20; var svg = d3.sel

我一直在研究d3js在缩放背景svg上的转换。然而,在Safari(10.0.1)中,我看到了在转换发生时出现的人工制品

在这个例子中,人工制品切断了背景圆圈(在Safari中打开first fiddle)

除非强制进行新渲染(例如,调整窗口大小),否则这些人工制品将保留

Chrome和Firefox没有显示这个问题

下面是一个小例子的提琴(在Safari中打开):

代码在处理缩放:

var N = 200;
var wh = 600;
var r = 20;

var svg = d3.select('body').append("svg").attr('width',wh).attr('height',wh);
var country = svg.append('g');
country.attr("transform", "scale(" + wh +"," + wh +")");

for(var i = 0; i < N; i++) {
  var cx = Math.random();
  var cy = Math.random();
  country.append("circle")
    .attr("cx", cx)
    .attr("cy", cy)
    .attr("r", r/wh)
    .style('fill',"#ccc");
}

svg.append('circle')
  .attr("cx", 0)
  .attr("cy", 0)
  .transition()
  .duration(500)
  .attr("cx", 0.5*wh)
  .attr("cy", 0.5*wh)
  .attr("r",r*1.5)
  .transition()
  .duration(500)
  .attr("cx", 0)
  .attr("cy", 0);
var N=200;
var-wh=600;
var r=20;
var svg=d3.select('body')。append('svg')。attr('width',wh)。attr('height',wh);
var country=svg.append('g');
country.attr(“转换”、“比例”(+wh+)、“+wh+”);
对于(变量i=0;i
当我不缩放背景svg时,人工制品不会显示:

在不缩放的情况下使用FIDLE编写代码:

var N = 200;
var wh = 600;
var r = 20;
var svg = d3.select('body').append("svg").attr('width',wh).attr('height',wh);
var country = svg.append('g');

for(var i = 0; i < N; i++) {
  var cx = Math.random()*wh;
  var cy = Math.random()*wh;
  country.append("circle")
    .attr("cx", cx)
    .attr("cy", cy)
    .attr("r", r)
    .style('fill',"#ccc");
}

svg.append('circle')
  .attr("cx", 0)
  .attr("cy", 0)
  .transition()
  .duration(500)
  .attr("cx", 0.5*wh)
  .attr("cy", 0.5*wh)
  .attr("r",r*1.5)
  .transition()
  .duration(500)
  .attr("cx", 0)
  .attr("cy", 0);
var N=200;
var-wh=600;
var r=20;
var svg=d3.select('body')。append('svg')。attr('width',wh)。attr('height',wh);
var country=svg.append('g');
对于(变量i=0;i

以前有人遇到过这种情况吗?有解决方法吗?

报告一个webkit错误。我会这样做。但我希望有一个解决这个问题的办法,因为我们(现在)遇到了这个问题。你找到Thijs的解决方案了吗?Safari很酷,可以设置属性“height”和“width”,而不设置特定的单位,比如“px”?