【发布时间】:2019-10-13 15:21:15
【问题描述】:
我正在尝试将矩形绘制为四条线。问题是顶部和左侧的线条看起来更细,并且右下角缺少像素(请参阅屏幕截图)。
HTML svg 元素:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" width="500" height="500" style="
padding: 20px;
box-sizing: border-box;
">
<line x1="0" y1="0" x2="20" y2="0" class="line"></line>
<line x1="20" y1="0" x2="20" y2="20" class="line"></line>
<line x1="20" y1="20" x2="0" y2="20" class="line"></line>
<line x1="0" y1="20" x2="0" y2="0" class="line"></line></svg>
</svg>
在浏览器中渲染结果: [
【问题讨论】:
-
您的
css为class="line"定义了什么?尝试将stroke-linecap:round;stroke-linejoin:round;添加到类定义中。 -
@daShier .line 仅将描边颜色定义为黑色。添加 stroke-linecap:square;解决了丢失的像素。但是右边和底线还是比较粗的。
-
在 SVG 标记注释上,您似乎缺少
<svg viewBox="...">属性,该属性确定页面尺寸(宽度和高度,仅用于“显示 SVG 文件的内容”) ") 映射到图像内坐标(本质上是无单位的,并且仅在 SVG 文档中有意义)。 viewBox 给出了“裁剪”矩形,并说明应该绘制 SVG 文档的哪个部分,然后宽度/高度告诉所有者在什么物理尺寸上绘制它。例如width="10px" height="20px" viewBox="0 0 1 2"在页面上是 10x20,显示 (0,0) 和 (1,2) 之间的所有内容 -
@Mike'Pomax'Kamermans 如果您不希望绘图缩放其容器比例,则可以省略 viewBox。有时这就是你想要的。
-
有时,但这在标准 HTML 上下文中非常很少见,您使用 SVG 的主要原因正是因为它是可缩放的矢量图形。
标签: javascript html css svg