SVG“填充”与“中风”重叠

Posted

技术标签:

【中文标题】SVG“填充”与“中风”重叠【英文标题】:SVG `fill` overlaps `stroke` 【发布时间】:2021-11-16 06:58:22 【问题描述】:

有一个圆圈,它有fillstroke。但我看到fill 颜色与stroke 有一点重叠。当我从strokenone 时,我松开了之前的圆半径,因为它的空间被释放了。

我预计 fillstroke 在 CSS 中的行为与 backgroundborder 相同,但事实并非如此。 我无法将它们设置为具有相同不透明度的相同颜色,因为fill 将与stroke 重叠,我会看到另一种颜色出现。

fillstroke 都设置为红色,不透明度相同。

我该怎么做,所以fill 停在stroke 开始的地方(fillstroke 具有相同的颜色和不透明度),并且我的颜色是纯色没有任何边框?

【问题讨论】:

【参考方案1】:

您正在寻找 stroke-alignment,尽管它是一个从未实现的 CSS 功能 - 请参阅 https://www.w3.org/TR/svg-strokes/#SpecifyingStrokeAlignment。

对于简单的几何体,可以通过复制结构和调整来实现。

#c1 
  fill: red;
  fill-opacity: 0.3;
  stroke: none;

#c2 
  stroke: green;
  stroke-opacity: 0.3;
  fill: none;
<svg viewBox="0 0 40 40">
  <circle id="c1" cx="20" cy="20" r="11.5" stroke-></circle>
  <circle id="c2" cx="20" cy="20" r="13" stroke-></circle>
</svg>

或者通过改变元素的不透明度,而不是属性。

svg circle 
  opacity: 0.3;
  fill: red;
  stroke: green;
<svg viewBox="0 0 40 40">
  <circle cx="20" cy="20" r="13" stroke-></circle>
</svg>

【讨论】:

以上是关于SVG“填充”与“中风”重叠的主要内容,如果未能解决你的问题,请参考以下文章

使用无重复图像图案填充形状:不需要的轮廓线

缺失值(NaN 值)与填充值的重叠图

具有边框半径的填充与我的图像重叠

文本输入填充与父容器的网格间隙重叠[重复]

UISearchController 与状态栏重叠并且不填充 iPhone X

如何获取图像作为 SVG 填充的背景