gpt4 book ai didi

html - SVG 多边形描边的错误

转载 作者:行者123 更新时间:2023-11-27 23:33:54 25 4
gpt4 key购买 nike

我创建了带有六边形图像 mask 的 SVG,但当我尝试为多边形赋予笔划样式时出现错误:笔划超出了多边形。我可以做些什么来创建正确的行程?

这是我的代码:

<svg class="main-svg" width="284" height="332" viewBox="0 0 142 166" version="1.1" xmlns="http://www.w3.org/2000/svg">
<defs>
<pattern id="img1" patternUnits="userSpaceOnUse" width="142" height="166">
<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://eisenpar.com/honeycomb/img/team1.jpg" x="-30" width="284" height="166"></image>
</pattern>
</defs>
<polygon points="71 0 142 41 142 123 71 166 0 123 0 41" fill="url(#img1)"></polygon>
</svg>

这是 CSS 代码:

 .main-svg {
width: 282px;
height: 330px;
}

polygon {
stroke: rgba(0,0,0,0.5);
stroke-width: 13px;
}

和 codepen 结果:http://codepen.io/anon/pen/vLmxoo

谢谢!

最佳答案

这不是 Bug,这是 stroke 在 SVG 中的设计方式。与 HTML/CSS 中的 border 不同,它不位于形状之外,而是位于形状的边界上(一半在里面,一半在外面)。

你可以使用 stroke-position: 内部 | outside 来改变这种行为 - 但它是 never implemented 🙁 *

解决这个问题的唯一方法是

  1. 叠加一个“小”笔画宽度的形状(here)
  2. 放大 svg 使边框不被切断 (here)


* 在 SVG 2.0 中有一个名为 stroke-alignment 的功能

关于html - SVG 多边形描边的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34676859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com