使用视箱时如何阻止路径在D3中模糊/消失?

Chr*_*ris 5 javascript svg d3.js

我正在使用D3库来创建一些图形.它们放在一个视图框中(参见下面"输出"下的片段).

视图框允许响应式缩放.

但是在某些分辨率下,线条会消失,或者模糊/变粗.我认为这与它在这些分辨率上不是像素完美有关,但我可能错了.

除了以外没有添加任何其他样式

shape-rendering: crispEdges;
Run Code Online (Sandbox Code Playgroud)

JS

this.y = d3.scale.linear()
    .rangeRound([this.height, 0]);

this.yAxis = d3.svg.axis()
    .scale(this.y)
    .tickSize(this.width)
    .tickValues([0, 25, 50, 75, 100])
    .tickFormat(function(d) {
        return parseInt(d, 10) + "%";
    })
    .orient("right");

    this.y.domain([0, 100]);


// Y Axis elements
var gy = this.svg.append("g").attr("class", "y axis").call(this.yAxis);

// Add minor class to all the things
gy.selectAll("g").classed("minor", true);

// Move the text over to the left
gy.selectAll("text").attr("x", 0).attr("dy", -4);
Run Code Online (Sandbox Code Playgroud)

输出

<svg class="bargraph" viewBox="0 0 250 250" preserveAspectRatio="xMidYMid" width="100%" height="100%">
    <g class="x axis">...</g>
    <g class="y axis">
        <g class="tick minor" transform="translate(0,150)">
        ..repeat..
    </g>
    ...content...
</svg>
Run Code Online (Sandbox Code Playgroud)

彩绘输出

坏 - 注意线75%和50%

坏

好 - 像黄瓜一样脆!

在此输入图像描述

Rob*_*son 5

使用vector-effect ="non-scaling-stroke",因此笔划宽度不会缩放.这样,缩小时它不会崩溃.