本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(2)

vue中禁止页面滚动/滚动事件穿透-弹出蒙版时弹出层下面还可以滚动问题解决

发布于2021-05-30 07:20     阅读(1862)     评论(0)     点赞(25)     收藏(3)


弹出层时,蒙版下还可以滚动页面

移动端

在蒙层所在div上加 @touchmove.prevent

<div class="maskBox" @touchmove.prevent></div>

PC端

弹层显示时调用 stopMove()停止页面滚动 ,弹层消失时调用 Move()开启页面滚动

  1. //停止页面滚动
  2. stopMove(){
  3. let m = function(e){e.preventDefault();};
  4. document.body.style.overflow='hidden';
  5. document.addEventListener("touchmove",m,{ passive:false });//禁止页面滑动
  6. },
  7. //开启页面滚动
  8. Move(){
  9. let m =function(e){e.preventDefault();};
  10. document.body.style.overflow='';//出现滚动条
  11. document.removeEventListener("touchmove",m,{ passive:true });
  12. }

vue封装

  1. directives: {
  2. fixed: {
  3. // inserted 被绑定元素插入父节点时调用
  4. inserted () {
  5. let scrollTop = document.body.scrollTop || document.documentElement.scrollTop
  6. document.body.style.cssText += 'position:fixed;width:100%;top:-' + scrollTop + 'px;'
  7. },
  8. // unbind 指令与元素解绑时调用
  9. unbind () {
  10. let body = document.body
  11. body.style.position = ''
  12. let top = body.style.top
  13. document.body.scrollTop = document.documentElement.scrollTop = -parseInt(top)
  14. body.style.top = ''
  15. }
  16. }
  17. },

自定义指令使用

  1. <div v-if="isShowRecordModal" v-fixed>
  2. ....
  3. ....
  4. </div>

 该指令的注意点是必须使用v-if开启关闭弹窗,因为该指令依赖于dom的插入和注销,使用v-show是肯定不行的。

 

原文链接:https://blog.csdn.net/JackieDYH/article/details/117296109




所属网站分类: 技术文章 > 博客

作者:Hggh

链接:http://www.qianduanheidong.com/blog/article/115838/b0dff97fd723585bb9bb/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0
收藏该文
已收藏

评论内容:(最多支持255个字符)