使用 ::before 背景图片时移动设备上的图片边框问题 (chrome)
Image border issue on mobile devices (chrome) when using ::before background image
我们网站上有多个地方使用 .svg 和背景图片规则来创建形状。
例如:
&:before {
bottom: auto;
height: 4rem;
content:'';
display: block;
width: 100%;
position: absolute;
left: 0;
top: 0;
background-image: url('img/layout/press-before.svg');
background-size: 100%;
background-repeat: no-repeat;
@media screen and (max-width: $viewport-xs) {
height: 2rem;
}
@media screen and (max-width: $viewport-sm) {
top: -.1rem;
}
}
这在所有分辨率的桌面上都运行良好。
但是在一些使用 chrome 的移动设备上,当被标记的块具有相同的颜色时会出现问题。
似乎有 1 个或几个像素插值不正确,导致显示底层元素的边缘。
我尝试过的事情:
+ 使用 png、jpg 而不是 .svg 来查看问题是否与 .svg 的光栅化有关(问题仍然存在,没有区别)
+ 稍微向上移动图像(保留线条)
+ 让它稍微大一点(保留线)
参考以下图片。
issue example 1
issue example 2
非常感谢任何建议!
我的解决方案是通过将 top: -1px
添加到 pseudo-element 来将图像向上移动一点。
我在此处发布此问题之前尝试过此操作,但没有用。
这与伪元素的父元素使用 overflow-x: hidden
的事实有关,因此 overflow-y 也自动隐藏了(我正在为任何有类似问题的人添加它)。
当然这意味着我需要稍微调整一下 svg 的形状,因为它向上移动了 1px。
我们网站上有多个地方使用 .svg 和背景图片规则来创建形状。
例如:
&:before {
bottom: auto;
height: 4rem;
content:'';
display: block;
width: 100%;
position: absolute;
left: 0;
top: 0;
background-image: url('img/layout/press-before.svg');
background-size: 100%;
background-repeat: no-repeat;
@media screen and (max-width: $viewport-xs) {
height: 2rem;
}
@media screen and (max-width: $viewport-sm) {
top: -.1rem;
}
}
这在所有分辨率的桌面上都运行良好。 但是在一些使用 chrome 的移动设备上,当被标记的块具有相同的颜色时会出现问题。 似乎有 1 个或几个像素插值不正确,导致显示底层元素的边缘。
我尝试过的事情: + 使用 png、jpg 而不是 .svg 来查看问题是否与 .svg 的光栅化有关(问题仍然存在,没有区别) + 稍微向上移动图像(保留线条) + 让它稍微大一点(保留线)
参考以下图片。
issue example 1 issue example 2
非常感谢任何建议!
我的解决方案是通过将 top: -1px
添加到 pseudo-element 来将图像向上移动一点。
我在此处发布此问题之前尝试过此操作,但没有用。
这与伪元素的父元素使用 overflow-x: hidden
的事实有关,因此 overflow-y 也自动隐藏了(我正在为任何有类似问题的人添加它)。
当然这意味着我需要稍微调整一下 svg 的形状,因为它向上移动了 1px。