小程序中的滚动穿透问题

Mask-Scroll

> 原码地址*css

蒙层防穿透问题

> 蒙层穿透就是,当你用fixed 布局让蒙层显示的时候, 手指滑动屏幕会出现底部内容也滑动的现象. 如图: html

fixed

当蒙层出现的时候,你滚动屏幕,底部内容也一块儿跟着滚动。 这就是蒙层穿透, 也能够叫 '滚动穿透'. 固然出现这种状况, 用户体验固然是很差的了。 因此做为一个有点追求的工程师固然是不容许这种状况的发生了(手动狗头...)前端

狗头保命

## 解决方案git

这种要分状况,github

  • 当蒙层没有滚动条的时候。
  • 当蒙层出现滚动条的时候

1. 当弹窗没有滚动条的时候。

直接监听 catch:touchmove 方法, 而后直接返回就能够了。 web

代码能够去看 fixed 目录下的文件 小程序

主要代码:segmentfault

*// wxml*

  <view 

​    class="fixed-mask"

​    bind:tap="hideMsak"

​    wx:if="{{isShowMask}}"

​    catch:touchmove="stopMove">

​    <view class="mask-container" >

​      <view class="mask__item">

​        I am  {{dogName}}

​      </view>

​    </view>

  </view>

  *// css*

  .fixed-mask {

  position: fixed;

  left: 0;

  top: 0;

  height: 100vh;

  width: 100vw;

  background: #333;

  opacity: 0.8;

  z-index: 2;

}

.mask-container {

  position: absolute;

  top: 50%;

  left: 50%;

  transform: translate(-50%, -50%);

}

.mask__item {

  margin: 0 auto;

  background-color: #ff0015;

  text-align: center;

  width: 500rpx;

  height: 500rpx;

  line-height: 500rpx;

  margin-bottom: 20rpx;

}

*// js*

  stopMove () {

​    return;

  }

效果以下:微信小程序

scroll

上面是当弹窗没有滚动条的状况, 当弹窗出现滚动条的时候。微信

哦豁, 完蛋, 弹窗不能滚动了。

2. 当弹窗有滚动条的时候

方法一:

动态给底部滚动的元素 添加固定定位。也就是当出现弹窗的时候添加一个 class 样式类

效果如图:

scroll3

代码在 scroll1 文件夹。

*//  css* 

.bottom-fixed {

  position: fixed;

  left: 0;

  top: 0;

  overflow: hidden;

}

*// wxml*

 <view class="dog-container {{isShowMask ? 'bottom-fixed' : ''}}"></view>

你们能够看到 由于底部元素给固定到页面顶部了, 而不是你点击弹窗时出现的位置。目前本身尚未找到解决方法。 若是大佬有会的, 不吝赐教。。

*方法二:*

> scroll-view 设置高度 以及纵向滚动方向。

不过scroll-view 会有一些bug

详情查看

代码在 scrooll 文件夹

效果以下图:

scroll4

[完]

原文连接

【做者简介:】 Mars 芦苇科技web前端开发工程师 喜欢 看电影 ,撸铁 还有学习。擅长 微信小程序开发, 系统管理后台。访问 www.talkmoney.cn 了解更多

做者主页:

github

segmentfault

相关文章
相关标签/搜索