我的用例可能有些独特,但我正在使用DOM元素创建一个动态大小的正方形网格,这些元素被包含在一个flexbox中。每个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
,所以无法使用SASS/LESS函数,如floor / ceil
。我还注意到增加描边宽度可以缓解问题,但我更喜欢保持线条细。是否有其他方法可以使线条保持一致?
vector-effect ='non-scaling-stroke'
,以及在Firefox上为stroke-width
设置整数,它解决了问题。在Chrome上,我建议只使用vector-effect ='non-scaling-stroke'
和整数stroke-width
。 - Ambroise Rabier