【web前端】ios上使用swiper 在自动翻页时出现白色闪屏的解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【web前端】ios上使用swiper 在自动翻页时出现白色闪屏的解决相关的知识,希望对你有一定的参考价值。
参考技术A 在ios上,如果有一个宽度100%的swiper,在自动向右翻页时,后面一页的左边会闪一块白色经过多次各种试验,我发现了这个问题的原因
应该是ios判断后面一页这个dom没有在屏幕上显示,所以没有渲染它,等到滚动到屏幕内时候开始渲染,所以出现的短暂的白屏。
发现这个原因后,我让每个swiper-slide左边多出来一块padding,这样在显示当前的swiper-slide时,也有一小块下一页的swiper-slide在屏幕中,所以系统就会去渲染这个dom
就是加上如下的css
swiper在vue中使用,纵向滚动翻页,超出一屏的解决方案
参考技术A 1.使用方法<template>
<Swiper
:options="swiperOption"
:style=" height: setHeight "
@slideChange="onSlideChange"
>
<SwiperSlide class="slide">page1</SwiperSlide>
<SwiperSlide class="slide">page2</SwiperSlide>
<SwiperSlide class="slide">page3</SwiperSlide>
</Swiper>
</template>
<script>
import swiper, swiperSlide from 'vue-awesome-swiper';
import 'swiper/css/swiper.css';
export default
components:
Swiper: swiper,
SwiperSlide: swiperSlide,
,
data()
let vm = this;
return
swiperOption:
direction: 'vertical',
initialSlide: 0,
on:
init()
vm.$swiper = this;
,
,
,
setHeight:
document.documentElement.clientHeight || document.body.clientHeight,
;
,
created()
this.setHeight =
document.documentElement.clientHeight || document.body.clientHeight;
this.handlerSwiper();
,
methods:
onSlideChange()
let pageIndex = this.$swiper.activeIndex;
switch (pageIndex)
case 0:
// ...
break;
case 1:
// ...
break;
case 2:
// ...
break;
,
handlerSwiper()
let startScroll, touchStart, touchCurrent;
this.$nextTick(() =>
this.$swiper.slides.on(
'touchstart',
function (e)
startScroll = Math.floor(this.scrollTop); // 针对安卓获取到小数进行向下取整
touchStart = e.targetTouches[0].pageY;
,
true,
);
this.$swiper.slides.on(
'touchmove',
function (e)
touchCurrent = e.targetTouches[0].pageY;
let touchesDiff = touchCurrent - touchStart;
let slide = this;
let onlyScrolling =
slide.scrollHeight > slide.offsetHeight && //allow only when slide is scrollable
((touchesDiff < 0 && startScroll === 0) || //start from top edge to scroll bottom
(touchesDiff > 0 &&
startScroll === slide.scrollHeight - slide.offsetHeight) || //start from bottom edge to scroll top
(startScroll > 0 &&
startScroll < slide.scrollHeight - slide.offsetHeight)); //start from the middle
if (onlyScrolling)
e.stopPropagation();
,
true,
);
);
,
,
;
</script>
<style scoped>
body
overflow: hidden;
.swiper-container
width: 100%;
.swiper-slide
overflow: scroll;
background: #00f;
height: 1000px; /* 高度由内容填充后删掉 */
</style>
2.解决swiper在微信开发者工具无法滑动:
以上是关于【web前端】ios上使用swiper 在自动翻页时出现白色闪屏的解决的主要内容,如果未能解决你的问题,请参考以下文章
vue-awesome-swiper - 基于vue实现h5滑动翻页效果
2022-02-20 Vue中使用swiper,上下翻页和分页器自定义