【发布时间】:2011-11-06 16:05:12
【问题描述】:
目前正在构建一个基于浏览器的 SVG 应用程序。在这个应用程序中,用户可以设置各种形状的样式和位置,包括矩形。
当我将stroke-width 应用于1px 的SVG rect 元素时,不同的浏览器以不同的方式将笔划应用于rect 的偏移和插入。事实证明这很麻烦,尤其是,当我尝试计算矩形的外部宽度和视觉位置并将其放置在其他元素旁边时。
例如:
- Firefox 增加了 1px 插入(底部和左侧)和 1px 偏移(顶部和右侧)
- Chrome 添加了 1px 内嵌(顶部和左侧)和 1px 偏移(底部和右侧)
到目前为止,我唯一的解决方案是自己绘制实际边框(可能使用path 工具)并将边框放置在描边元素的后面。但这个解决方案是一个令人不快的解决方法,如果可能的话,我宁愿不要走这条路。
所以我的问题是,你能控制 SVG 的 stroke-width 是如何在元素上绘制的吗?
【问题讨论】:
-
您可以使用一些过滤技巧来实现这一点 - 但这不是一个很好的解决方案
-
这里有
paint-order参数,你可以在其中指定,填充应该在描边之上渲染,所以你会得到“外对齐”,见jsfiddle.net/hne0kyLg/1 -
找到了一种使用 css 'outline-' 属性的方法:codepen.io/badcat/pen/YVzmYY。不确定跨浏览器对此的支持是什么,但可能有用。