我目前正在尝试用svg画一些图形,纸张尺寸为A4,1个逻辑单元代表1mm。所以我将视口(viewport)设置为 297mmx210mm,viewbox 为 297x210。现在的问题是我画的图 stroke-width 不再是 1 个像素。例如,
<!DOCTYPE html>
<html>
<body>
<svg width="297mm" height="210mm" viewBox='0 0 297 210' style="border: 1px solid #cccccc;">
<path stroke="black" fill="none" stroke-width='1' d='M 10 10 L 60 10'/>
<path stroke="black" fill="none" stroke-width='1px' d='M 10 30 L 60 30'/>
<path stroke="black" fill="none" d='M 10 50 L 60 50'/>
</svg>
</body>
</html>
即使我将其 stroke-width 设置为“1px”,上面的这 3 行也具有完全相同的线宽。在这种设置下是否仍然可以绘制 1 像素宽的线?
最佳答案
试试这个:
<path stroke="black" fill="none" stroke-width='1px' d='M 10 30 L 60 30' vector-effect="non-scaling-stroke"/>
vector-effect="non-scaling-stroke"
是 SVG 1.2 Tiny 的一项功能,它强制笔划宽度完全符合您的指定,无论缩放或单位转换是否有效。不幸的是,FF 和 Chrome(也许其他)支持它,但 IE(到目前为止)不支持。如果您可以接受,那么它就是解决您问题的最简单方法。
关于javascript - 在 A4 svg 绘图中绘制 1 像素笔画宽度图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17584348/