Javascript SVG使用百分比布局避免部分像素宽度和高度
我在复杂的网格布局中有SVG图表。用户可以调整网格大小、添加和删除网格。我目前正在使用flexbox,使用FlexBasis的百分比布局。我发现,由于百分比布局,浏览器将svg元素的大小调整为部分像素宽度和高度。例如,1000.47px。图表SVG已编码,因此看起来清晰。但是,当svg宽度/高度有部分像素时,它们不再清晰,并且会出现抗锯齿 我试过:Javascript SVG使用百分比布局避免部分像素宽度和高度,javascript,html,css,svg,Javascript,Html,Css,Svg,我在复杂的网格布局中有SVG图表。用户可以调整网格大小、添加和删除网格。我目前正在使用flexbox,使用FlexBasis的百分比布局。我发现,由于百分比布局,浏览器将svg元素的大小调整为部分像素宽度和高度。例如,1000.47px。图表SVG已编码,因此看起来清晰。但是,当svg宽度/高度有部分像素时,它们不再清晰,并且会出现抗锯齿 我试过: 将svg设置为使用shape rendering=“crisp edges” 使用JavaScript和ResizeObserver确定容器何时更改
node.boundingClientRect().height; // or
node.boundingClientRect().width;
返回非整数值,SVG将开始消除混叠。如果不返回非整数值,则无法测试任何潜在的解决方案。就目前的形式而言,这个问题是无法回答的(也许除了与维基百科浏览器呈现引擎页面的链接)。因此,它不太可能对未来的用户和离题用户有用。请加一个例子。可运行、最小、完整且可验证的亚像素渲染取决于浏览器。例如,IE将四舍五入到最接近的整数。谢谢Philipp。我实际上使用的是电子,所以chrome似乎没有使用积分值。如果有一个特定于chrome的解决方案,那就行了。你能确认你在chrome上看到这些SVG模糊吗。如果是,您能检查
chrome://flags/#enable-gpu光栅化
。听起来你可能是怪异行为的受害者。这些SVG对我来说很好(不过bug报告中提到的站点没有)。然而,我已经尝试禁用启用gpu光栅化标志,但我仍然有问题。没有一个标志,就没有办法测试任何潜在的解决方案。就目前的形式而言,这个问题是无法回答的(也许除了与维基百科浏览器呈现引擎页面的链接)。因此,它不太可能对未来的用户和离题用户有用。请加一个例子。可运行、最小、完整且可验证的亚像素渲染取决于浏览器。例如,IE将四舍五入到最接近的整数。谢谢Philipp。我实际上使用的是电子,所以chrome似乎没有使用积分值。如果有一个特定于chrome的解决方案,那就行了。你能确认你在chrome上看到这些SVG模糊吗。如果是,您能检查chrome://flags/#enable-gpu光栅化
。听起来你可能是怪异行为的受害者。这些SVG对我来说很好(不过bug报告中提到的站点没有)。然而,我已经尝试禁用启用gpu光栅化标志,但我仍然有问题。