【发布时间】:2020-10-05 15:31:24
【问题描述】:
在下图中,请注意粉色 SVG 的左右两侧是黑色边框:
演示:https://codepen.io/mhulse/pen/PoZGEqJ
在 Safari 中以特定视口大小查看时会发生这种情况(只需调整浏览器窗口的大小即可查看)。
我不想要黑色边框。
我能想到的一个解决方案是在父容器上添加一个插入框阴影,即白色背景的颜色(本质上是覆盖它)。
我不能接受的解决方案:
- 负
1px左侧/右侧边距。溢出是不可接受的,因为它会导致水平滚动(现实世界的用例会触及浏览器视口的边缘)。 - 父级上隐藏的溢出(实际用例可能要求子级绝对位于容器外部)。
是否可以在 Safari 中强制 SVG 始终触摸容器边缘并且没有黑色间隙?
【问题讨论】:
-
背景
怎么样? updated codepen 这是因为抗锯齿,浏览器试图通过舍入坐标来避免大多数框(元素)。当然,Safari 对 HTML 和 SVG 元素有不同的规则,最终 HTML 元素会被拉伸,而 svg 路径会收缩到最近的像素坐标。请注意,即使在非 100% 缩放级别的 Firefox 上,您也会有相同的行为。强制在 SVG 图像中进行整个渲染将强制使用一致的舍入规则,因此可以避免该问题。 -
哇!您的解决方案看起来很有希望!感谢您的回复/帮助!我现在正在测试。我会在这里回复我的结果。谢谢!!!!!!我仍在试图理解为什么 rect 似乎可以解决这个问题(现在重新阅读你的评论)你摇滚!再次,我会带着我的发现回来,所以我可以给你绿色的复选标记!
标签: svg safari rounding-error