美文网首页
swiper插件实现多个页面间满屏切换,且单个页面可滚动

swiper插件实现多个页面间满屏切换,且单个页面可滚动

作者: 阳光小美女king | 来源:发表于2019-03-14 18:24 被阅读0次

页面间满屏切换,本来想自己写动画,但是实现的动画总是不那么优美,于是使用了swiper插件。
但是这个插件也仅支持满屏的切换,我这边的第二屏页面超级长,所以想要支持第二屏也要单独可滚动,就要自己控制一下啦

 window.onload = function () {
    var swiper = new Swiper('.swiper-container', {
      direction: 'vertical', // 垂直切换选项
      loop: false, // 循环模式选项
      resistanceRatio: 0
    })
    var startScroll
    var touchStart
    var touchCurrent
    swiper.slides.on('touchstart', function (e) {
      startScroll = this.scrollTop
      touchStart = e.targetTouches[0].pageY
    }, true)
    swiper.slides.on('touchmove', function (e) {
      touchCurrent = e.targetTouches[0].pageY
      var touchesDiff = touchCurrent - touchStart
      var slide = this
      var onlyScrolling =
        (slide.scrollHeight - 10 > slide.offsetHeight) &&
        (
          (touchesDiff < 0 && startScroll === 0) ||
          (touchesDiff > 0 && startScroll === (slide.scrollHeight - slide.offsetHeight)) ||
          (startScroll > 0 && startScroll - 50 < (slide.scrollHeight - slide.offsetHeight))
        )
      if (onlyScrolling) {
        e.stopPropagation()
      }
    }, true)
  }

判断

当前页面高度>屏幕高度 &&
用户向下滑动页面 ,且当前滚动高度是0 ||
用户向上滑动页面,且当前滚动高度是页面的底部 ||
用户向上滑动,且当前滚动高度在页面中间

满足以上条件,则阻止事件冒泡,搞定

相关文章

网友评论

      本文标题:swiper插件实现多个页面间满屏切换,且单个页面可滚动

      本文链接:https://www.haomeiwen.com/subject/lricmqtx.html