当前位置:人工智能 > 移动Web轮播图IOS卡住问题

移动Web轮播图IOS卡住问题

  • 发布:2023-10-10 10:50

-->

晚饭前,测试人员抱怨手动左右滑动时横幅轮播会卡住。我觉得不科学,为什么大果手机会卡?当我测试时看到自己拿着一个iPod,我就觉得这个小玩意的性能并不强大。后来我买了5S,还是有卡顿的情况。有趣的是,两台5S,一台IOS7,一台IOS8,IOS7基本没有卡顿。 ,IOS8会卡住。

晚饭后我从Test借了一个iPod。 。 。 。就开始解决这个问题吧。

我一直觉得轮播应该不会有什么问题,因为我用的是一个库Swipe,它的star已经有5000多了。应该比较靠谱。我想推荐这个图书馆。它非常适合在移动设备上使用。不压缩带注释只有15k,支持无限轮播、手动左右滑动、配置项。

(你会发现作者的仓库没有太多东西,其他人基本无从下手……)

使用方法也非常简单。 Github 上的 ReadMe 就足够了。我再重复一遍:

HTML 结构:







CSS样式:

.滑动{
溢出:隐藏;
可见性:隐藏;
位置:相对;
}
.swipe-wrap {
溢出:隐藏;
位置:相对;
}
.swipe-wrap > div {
浮动:左;
宽度:100%;
位置:相对;
}

JavaScript代码:

window.mySwipe = new Swipe(document.getElementById('slider'), {
开始幻灯片:2,
速度:400,
自动:3000,
连续:真实,
禁用滚动:假,
stopPropagation:假,
回调:函数(索引,elem){},
transitionEnd:函数(索引,elem){}
});

好吧,我们继续刚才的滞后。 Google 并不孤单,所以你还是得去 Github 看看项目的问题。已经有超过 300 个问题。 。由于滞后发生在IOS上,所以我用IOS作为关键字进行过滤,结果还是有很多。我一页一页地看着,英文读起来很痛苦。

找了很久(其实只有几分钟...),我发现了这个:

iOS 硬件加速触发修复(CSS)

在容器元素上添加 -webkit-perspective 和 -webkit-backface-visibility 以触发 iOS6 中的硬件加速。这是一个修复,因为 translate3d 不再触发 iOS6 Safari 中的硬件加速。

然后我抱着试一试的态度将其添加到css中:

.滑动{
溢出:隐藏;
可见性:隐藏;
位置:相对;
}
.swipe-wrap {
溢出:隐藏;
位置:相对;
-webkit-backface-visibility:隐藏;
背面可见性:隐藏;
-webkit-transform-style:保留-3d;
变换样式:preserve-3d;
}
.swipe-wrap > div {
浮动:左;
宽度:100%;
位置:相对;
}

加了之后我只能说实在是太丝滑了! ! ! ! !问题中提到了IOS6,但我其实想说IOS7和IOS8也有这个问题。

我之前对硬件加速没有深入的了解,只知道translateZ(0) hack。今天我了解到透视和背面可见性也是可能的。其实SwipeJS库里有一个translate方法,里面有这么一句话:

style.webkitTransform = 'translate(' + dist + 'px,0)' + 'translateZ(0)';
style.transform = 'translateX(' + dist + 'px)';

您可以看到,translateZ hack 用于旧系统,但不适用于新系统。也许笔者认为新系统已经可以顺利运行了。我刚刚改变了它:

style.webkitTransform =
style.transform = 'translate(' + dist + 'px,0)' + 'translateZ(0)';

不过,没必要随意使用。它只有在添加透视和背面可见性后才起作用。

另外,上面的问题是2012年的! ! !而且,提出问题的同志还提到,PR被作者合并了,但是perspective和backface-visibility这两个属性并没有出现在最新版本的CSS代码中。或许笔者认为现在的机器已经足够流畅了。

修复错误很容易。总结一下:

硬件加速真的很有用,而且它可以通过多种方式开启,而不仅仅是translateZ。

如果使用开源的作品遇到问题,记得检查问题。

最后我们再说一遍。刚才提到的透视和背面可见性这两个属性非常有用。如果您在变换或转换过程中发现闪烁,请将它们添加到页面并尝试一下。详细信息请参见此处。

-->

相关文章

最新资讯

热门推荐