在mouted时, 取得的slider.clientWidth 和轮播开始时的 slider.clientWidth 不同

来源:4-6 轮播图组件实现(下)

慕UI1265895

2019-03-11

轮播图中,在电脑模式下,有时会出现轮播图的大小比视口的大小 小一点。
如图:
图片描述
取得的视口大小会发生变化,发现在第一次_setSliderWidth 的时候,读到的视口宽度和在轮播图滚动一次后重新读取this.$ref.slider.clientWidth视口不相同。前者尺寸稍小,后者才是正常的尺寸。
这种情况仅在电脑端出现,在移动设备模式下没有这种情况发生。
图片描述
这个期间没有发生任何的手动窗口缩放。
上面的这个问题,导致我不得不这样写初始化:

setTimeout(() => {
      this._setSliderWidth()
      this._initDots()
      this._initSlider()
	
	  this._setSliderWidth()
	  this.slider.refresh()
	
      if (this.autoplay) {
        this._play()
      }
    }, 20)

所有依赖包都是最新的。

写回答

2回答

ustbhuangyi

2019-03-12

你有来回切换模式吗

0
2
ustbhuangyi
回复
慕UI1265895
你看一下 GitHub master 的源码会有你说的问题吗
2019-03-12
共2条回复

慕UI1265895

提问者

2019-03-11

在手机模式下,没有这个问题

0
0

Vue2.0高级应用教学实战,开发企业级移动端音乐Web App

Vue.js高级知识应用大集合,实战企业级APP,教你搞定组件化开发。

5432 学习 · 3804 问题

查看课程