css - 如何防止 SVG 线条的粗细不一致和间隙?

标签 css svg styled-components

我的用例可能有点独特,但我正在使用包含在 flexbox 中的 DOM 元素创建一个动态大小的方形网格。每个 DOM 元素都有一个 SVG 图像背景和等于 calc(100vmin / <gridSize>) 的高度/宽度. SVG 元素很简单:

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"> <path stroke-width="2" stroke="#000" stroke-linecap="square" d="M0,50 h100 M50,0 v50"/> </svg>

但是,我注意到有些线条看起来比其他线条更暗,并且一些 SVG 线条之间存在间隙。 (见下图)我假设这是由于像素四舍五入造成的,因为当我调整浏览器大小时,间隙和厚度会跳来跳去。

我尝试将 calc 中的像素四舍五入, 但我正在使用 styled-components所以我无法使用像 floor / ceil 这样的 SASS/LESS 函数.我还注意到使笔划宽度变粗可以缓解这个问题,但我更愿意让我的线条变细。

还有其他方法可以使线条保持一致吗?

image

最佳答案

这是抗锯齿。设置shape-rendering ="crispEdges"将在大多数 UA 上将其关闭。

关于css - 如何防止 SVG 线条的粗细不一致和间隙?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44040163/

相关文章:

Jquery Accordion 菜单主动打开

html - 在 Vue JS 中,如何在单击时将类添加到 v-for 循环内的元素,而不将其添加到每个循环元素?

r - 在 R 中解析 SVG 路径

angular - 无法绑定(bind)到 inlineSVG

css - styled-components, polished and styledProps - darken() 抛出错误

reactjs - 无法使用 @emotion/styled 访问样式组件中的主题

javascript - 动画后无法单击元素(我猜不到)

javascript - jQuery 获取 SVG 中指定 ID 的所有元素

javascript - 样式化组件 - 比 ${props => props.theme...} 更容易访问传递的主题属性

css - 侧边栏在较小的屏幕上位于底部