我正在使用 d3.js 以这种方式生成一些直接在彼此之上的矩形:
var greenRed = d3.select(".green-red").append("svg")
.attr("height", 120);
greenRed.append("rect")
.attr("fill", "green")
.attr("x", 0)
.attr("y", 0)
.attr("height", 50)
.attr("width", 300);
greenRed.append("rect")
.attr("fill", "red")
.attr("x", 0)
.attr("y", 50)
.attr("height", 50)
.attr("width", 300);
我注意到,根据堆叠在一起的颜色,矩形之间要么存在非常薄的空白,要么是两种颜色的某种“重叠”。
你可以在这个小提琴中看到我的意思:http: //jsfiddle.net/ysim/PrC7X/
您可以看到,.green-green
并且.green-grey
没有问题(无论如何,肉眼);但是对于.green-blue
和.red-blue
,有一个重叠,对于.green-red
,有一个额外的空格。
我已经尝试添加.attr("stroke-rendering", "crispEdges")
(此处建议)和.attr("stroke", "none")
元素rect
,以及将两个rect
元素包装在一个g
元素中svg
并添加.attr("stroke-rendering", "crispEdges")
到该元素中(此处建议),但这些解决方案都不起作用。
是什么导致了这个额外的空白/重叠,我该如何修复它以使颜色整齐对齐,就像前两种情况一样?