ios 中fixed布局的页头和叶尾会被上拉和下拉覆盖

ios 中fixed布局的页头和叶尾会被上拉和下拉覆盖

dealScroll.js

/**
 * 是否根
 * @param {dom} obj
 */
function isDocument(obj) {
  return obj != null && obj.nodeType == obj.DOCUMENT_NODE;
}

/**
 * 处理touch事件
 * @param {event} e 事件对象
 */
const eventTouch = function (e) {
  //触摸节点
  let el = e.target;
  //存在滚动区域
  let scrollDom = false;
  while (!isDocument(el)) {
    if (el.getAttribute('autoScroll')) {
      scrollDom = true;
    }
    el = el.parentNode;
  }
  if (!scrollDom) {
    if (e.cancelable) {
      if (!e.defaultPrevented) {
        e.preventDefault();
      }
    }
  }
};

/**
 * 页面滚动
 * @version 1.0.2
 * @description 需要局部可以滚动,节点追加‘autoScroll’属性
 * @returns {function} disable 禁用滚动
 * @returns {function} enable 允许滚动
 */
const dealScroll = {
  /**
   * 禁用滚动
   */
  disable: function () {
    //绑定事件
    document.body.style.overflow = 'hidden';
    document.body.addEventListener('touchmove', eventTouch, {
      passive: false,
    });
  },
  /**
   * 允许滚动
   */
  enable: function () {
    //移除事件
    document.body.style.overflow = ''; //出现滚动条
    document.body.removeEventListener('touchmove', eventTouch, {
      passive: false,
    });
  },
};

export default dealScroll;

index.vue

<template>
  <div>
 //  需要滑动的区域
 <div  autoScroll="true"></div>
// fixed 固定的头尾
 <div></div>
  </div>
</template>

<script>
import dealScroll from "./dealScroll.js";
export default {
data(){},
beforeDestroy() {
    dealScroll.enable();
 },
mounted() {
   dealScroll.disable();
}
};
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值