美文网首页
小程序弹窗禁止底部内容滚动

小程序弹窗禁止底部内容滚动

作者: web前端攻城狮 | 来源:发表于2019-07-09 10:30 被阅读0次

    因公司业务需求:需要布局一个页面是底部一张图片position:fixed;z-index= -1固定在底部,然后上面一个html文件可上下拖动做到视觉差,手动写一个弹窗后底部内容还是可以滚动,因为弹窗里面的内容有textarea,textarea的placeholder会根据屏幕的滚动而滚动,这就贼吓人了,找了各种方法,给最外层套个view设置overflow:hidden,position:relative会导致页面滚动到顶部,确实不会滚动了。但是页面滚动到顶部这个效果就不太好了,用户滚动到底部了 然后一个弹窗弹起,又把页面滚动到顶部了,所以这种效果是不行的。
    后来尝试在浏览器调试给page加上overflow:hidden发现可行,比如弹起的时候给page加上overflow:hidden,隐藏的时候去掉,
    但是官方并没有给我们操作page的方法。
    最后尝试了各种方法,找到了一个好东西

    catchtouchmove="preventTouchMove"

    <view class="quickApply" wx:if="{{isVisible}}">
      <view class="shadow" catchtouchmove="preventTouchMove"></view> <-- 给你的弹窗加上这个东西,他会阻止页面滚动 -->
      <view class="content">
        <view class="head-info">
          <view class="close" bindtap="handleCloses">
            <image mode="widthFix" src="https://ojlf2aayk.qnssl.com/Combined%20Shape@2x.png"></image>
          </view>
          <text class="title">填写报名信息</text>
        </view>
        <view class="form">
          <view class="viewul">
            <view class="viewli">
              <view class="text">联系电话</view>
              <input type="tel" placeholder="请输入您的手机号" placeholder-class="phcolor" maxlength="11" bindinput="getPhonelg" cursor-spacing="40px"/>
            </view>
            <view class="viewli" >
              <view class="text">验证码</view>
              <input type="tel" placeholder="短信验证码" placeholder-class="phcolor" maxlength="6" bindinput="handleUserInfo" />
              <view class="{{verifyDisabled ? 'disabled-btn' : 'btn'}}" bindtap="getverificode">{{btnText}}</view>
              <view class="shortline"></view>
            </view>
            <view class="viewli" >
              <view class="text">姓名</view>
              <input type="text" placeholder="请填写您的姓名" placeholder-class="phcolor" value="{{name}}" bindinput="handleName"/>
            </view>
            <view class="viewli" >
              <view class="text">留言</view>
              <input type="text" placeholder="留言录取比例提高15%(选填)" placeholder-class="phcolor" maxlength="140" bindinput="handleCount" />
              <view class="countNum">{{countNum}}/140</view>
            </view>
          </view>
        </view>
        <view class="apply {{isDisabled ? 'btn-disabled' : ''}}" bindtap="quickApply">极速报名</view>
      </view>
    </view>
    
    
    preventTouchMove () {}
    
    

    为什么是空方法?因为要结合界面wxml看,蒙层view里有一个事件绑定catchtouchmove="preventTouchMove"。这样写的原因是阻断事件向下传递,避免在弹窗后还可以点击或者滑动蒙层下的界面。如果不这样写的话,如果主界面是一个可以滚动的界面,想想看,当弹窗弹出的时候用户还可以操作滚动列表,我想你的产品经理会来找你的。
    好了大家有什么问题欢迎邮件15723405987@163.com或者QQ8662054

    青团社招聘:

    招聘岗位:高级前端开发工程师P5及以上

    简历投递到:hr@qtshe.com || haochen@qtshe.com

    职位描述:

    1、建设工具、提炼组件、抽象框架,促进前端工程化、服务化,持续提升研发效率,保障线上产品质量

    2、构建H5/PC应用基础设施,主导建设前端各种发布/监控等平台,指导落实解决方案

    3、持续优化前端页面性能,维护前端代码规范,钻研各种前沿技术和创新交互,增强用户体验、开拓前端能力边界

    作者:一个被床封印的程序猿
    链接:https://www.jianshu.com/p/9a1c91e1e435
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    相关文章

      网友评论

          本文标题:小程序弹窗禁止底部内容滚动

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