为了填充整个页面的高度,我将height: 100%;
用于html和body标签,在关闭浏览器并重新打开之前,它可以正常工作。(由于移动设备https://nicolas-hoizey.com/2015/02/viewport-height-is-taller-than-the-visible-part-of-the-document-in-some-mobile-browsers.html上的问题,我不使用100vh)
复制步骤:
在这种情况下,页面将自行固定:
为什么会发生?如何解决此问题?
谢谢您!
最后,我找出了可行的解决方法:
.pagewrap {
transform: translateZ(0);
animation-name: 'repaint';
animation-duration: 3s;
animation-iteration-count: infinite;
animation-play-state: running;
animation-timing-function: linear;
}
@keyframes repaint {from { zoom: 99.99999%; } to { zoom: 99.99998%; }}
因此,这将强制页面在3秒的周期内连续重新绘制。
也许我应该调整它,使其每2秒仅移动一秒钟的时间,而不是连续移动:
.pagewrap { transform: translateZ(0); animation-name: 'repaint'; animation-duration: 2s; animation-iteration-count: infinite; animation-play-state: running; animation-timing-function: linear; } @keyframes repaint { 0% { zoom: 99.99999%; } 99% { zoom: 99.99999%; } 100% { zoom: 99.99998%; } }
我尝试过zoom: 99.99999;
至1
,但是某些在某些悬停效果上将比例转换为1以上的元素将显示缩放呼吸。所以99.99999到99.99998对我来说是使效果不可见的原因。
有点hacky的解决方案,可能会在很长的页面上出现性能问题,但可能不会,因为浏览器应该只渲染屏幕上的内容。我在上面使用的页面在图形上很繁琐,并具有许多复杂的多层效果,并且似乎对性能没有明显影响。[好像许多移动浏览器都过度优化了渲染,这导致了古怪的失败,并且没有记录良好的修复程序。强制重涂是我发现的唯一可行的解决方法。
我尝试了其他方法,但没有那么积极地记录在案的强迫重涂方法。就像在滚动停止200ms之后向页面中添加一些文本(不可见)等。但是什么都没做,所以我的动画整个页面永远都被黑客入侵。
就您而言,其他一些黑客可能会更好地工作。 article概述了导致重绘/重熔的所有各种因素,因此您可以尝试通过脚本执行其中的一些事情。