【发布时间】:2020-01-17 01:06:28
【问题描述】:
我正在 JS/CSS 中实现捏到缩放手势。为了做到这一点,我将一个相当大的图像源放在一个小尺寸的IMG 标记中,然后应用 CSS 缩放变换使其更大。
一切正常,但是在 Mobile Safari 上,一旦我开始放大,图像就会变得模糊。它不应该是这种情况,因为图像的src 足够大以支持这种尺寸,但不知何故,Mobile Safari 将其显示为模糊。
我已经对这个问题进行了相当多的调试,发现罪魁祸首是我页面中一个不相关的 div,它设置了translate3d(0,0,0)。据我了解,这是一个触发 GPU 硬件加速的 Hack。我认为这是因为translate3d(0,0,0),在渲染<img/> 时应用了硬件加速,并且由于<img> 的尺寸很小,所以它被绘制得很小,然后再应用比例。
为了更好地理解这个问题,我有这个代码,在in codepen here中可用
HTML
<div>
<div id="translate3d-div"/>
</div>
<img id="image" src="https://www.trackalytics.com/assets/thumbnails/lipsum.com.jpg"/>
CSS
#translate3d-div {
/* If I remove this, the image is not blurry */
transform: translate3d(0,0,0)
}
#image {
width: 95px;
height:76px;
transform: scale(20);
}
这在 Mobile Safari 上显示图像模糊,但在 Android 中的 Chrome 上可以正常工作。
除了删除不相关的translate3d 之外,还有其他方法可以解决此问题吗?我认为我不能这样做,因为它可能会被网页中的某些其他功能使用。
【问题讨论】:
标签: css mobile-safari css-transforms