亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在vue中實現(xiàn)禁止屏幕滾動,禁止屏幕滑動

 更新時間:2020年07月22日 10:24:52   作者:六月迎風  
這篇文章主要介紹了在vue中實現(xiàn)禁止屏幕滾動,禁止屏幕滑動,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

今天寫了一個Vue彈層組件,用來全屏查看圖片的,大概是下面這么一個效果:

其中背景是透明色的,但是彈出這個組件時手指滑動、鼠標滾輪滑動,底部頁面是會動。

作為自己開發(fā)的一個常用的組件,這種bug當然是要解決的。

于是學藝不精的我在網上找了蠻久的,看了不少博客,看了不少觀點和方法。終于找到了一個最簡單、最實在的方法,

代碼如下:

<div class="magnify" v-show="isShow" @click.self="hide" @touchmove.prevent @mousewheel.prevent>
...
</div>

首先,這個div就是整個遮罩組件的根組件,核心就是div上的事件綁定。

@touchmove 是觸摸移動事件

@mousewheel 是鼠標滾輪事件

而加了prevent事件后綴,相信大家都知道是阻止默認事件。

當組件在屏幕最上方顯示時,觸摸移動事件和鼠標滾輪都被阻止了,所以頁面不會再滾動。

在網上也看到了很多給body添加事件的解決方法:

function bodyScroll(event){ 
 event.preventDefault(); 
} 

document.body.addEventListener('touchmove',bodyScroll,false); 

這里就不說了,網上有很多,我也沒用上,所以沒有驗證,如果是傳統(tǒng)頁面的,可以使用一下這種方法。

好了,菜鳥要繼續(xù)去學習了。。。

補充知識:VUE2.0 實現(xiàn)移動端在固定區(qū)域內的滾動效果

1.開發(fā)工具:微信web開發(fā)者工具;

2.項目:嵌在APP中的一個活動,活動是H5頁面,使用VUE2.0框架。

3.需求,直接上截圖:

item 上拉滾動到底部,遮罩層部分消失;item下拉,遮罩層部分顯示。

4.代碼:

HTML:

遮罩層部分與滾動區(qū)域部分是平級

<template>
 <div id="selectGoods">
 <!--item列表區(qū)域-->
 <div class="goods-area" ref="box">
  <div class="goods-list" ref="item" v-for="(item,index) in items" >
  <img class="left-img" :src="item.goodsUrl" alt="">
  <div class="right-text">
   <span class="inviter-goods">{{item.resourceName}}</span> <br>
   <span class="invitee-rules"><span class="person-num">{{item.inviteResourceId}}</span>我是右側文本第二行</span>
  </div>
  </div>
 </div>
 <!--列表底部遮罩層-->
 <div class="bottom-mask" v-show="bottomMaskShow">
  <img class="mask-img" src="../../../static/inviteFriends/goodsListMask.png" alt="">
  <img class="bottom-triangle" src="../../../static/inviteFriends/xiasanjiao.png" alt="">
 </div>
 </div>
</template>

CSS(重點):

.goods-area{
 height:8.58rem;
 overflow-x: hidden;  /* 解決左右可以滑動的問題 */
 overflow-y: auto;  /* 解決左右可以滑動的問題 */
 overflow-scrolling: touch; /*兼容性 ios5+、android4+ */
}

JS:

this.$refs.是VUE2.0新增的一個對象,不需要使用JS原生的獲取DOM節(jié)點的方法,直接在元素上綁定ref,如上,<div ref = "box">,然后再JS中直接調用 this.$refs.box 就可以直接獲取。另外,感興趣的小伙伴可以看一下,console.log(this.$refs.item)的結果。

回歸本文主題,vue2.0 中的 mounted 方法,是頁面加載后調用方法的地方。這還牽扯到另外一個問題就是VUE的鉤子函數(后續(xù)工作中有了更深入的體會結合自己的實際項目再寫一篇)。

頁面加載后,監(jiān)聽滾動區(qū)域的 scroll 事件,調用 onScroll 方法,根據滾動的尺寸判斷是否已經滾動到底部,控制遮罩層的顯示和隱藏。

mounted () {
 this.$refs.box.addEventListener('scroll', this.onScroll);
},
onScroll () { //onScroll方法放在methods:{}中
 let nScrollHeight = this.$refs.box.scrollHeight; // 滾動距離總長 內部div的高度
 let nScrollTop = this.$refs.box.scrollTop; // 滾動條(點)當前的位置在內部div的高度 里占多少
 let itemHeight = nScrollHeight / (this.items.length); // 可以理解為每一個item的高度
 let scrollLength = itemHeight * (this.items.length - 4); // 默認顯示4個item
 this.bottomMaskShow = true;
 if (nScrollTop > (scrollLength -49)) { // 49 這個差值比較靈活,是根據項目中打印出來的item高度和scrollTop實際滾動(出去)的值對比得出的
 this.bottomMaskShow = false;
 } else
 if(nScrollTop <= (scrollLength -49)){ 
 this.bottomMaskShow = true;
 }
}

其實這個功能沒有什么難點,但是自己在這個問題上糾纏了好長時間,在移動端的效果總是不理想,原因在于,在一開始自己就進入了一個誤區(qū),認為在微信的開發(fā)工具上打印出來的 scrollTop 跟手機上打印出來的是一樣的,結果是,完全不一樣,手機根據尺寸的大小scrollTop的值也是不一樣的。

寫在最后:

1.對于移動端的適配問題,靈活,以不變應萬變;

2.遇到問題,想想那些點都是“你以為的”,可能就是這些“你以為的”出了問題;

以上這篇在vue中實現(xiàn)禁止屏幕滾動,禁止屏幕滑動就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue樣式疊層z-index不起作用的解決方案

    vue樣式疊層z-index不起作用的解決方案

    這篇文章主要介紹了vue樣式疊層z-index不起作用的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue移動端城市三級聯(lián)動組件使用詳解

    vue移動端城市三級聯(lián)動組件使用詳解

    這篇文章主要為大家詳細介紹了vue移動端城市三級聯(lián)動組件的使用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Vue中事件總線(eventBus)的深入詳解及使用

    Vue中事件總線(eventBus)的深入詳解及使用

    在vue項目中父子組件間的通訊很方便,但兄弟組件或多層嵌套組件間的通訊,就會比較麻煩,這時使用eventBus通訊,就可以很便捷的解決這個問題,這篇文章主要給大家介紹了關于Vue中事件總線(eventBus)使用的相關資料,需要的朋友可以參考下
    2022-03-03
  • Vue集成three.js并加載glb、gltf、FBX、json模型的場景分析

    Vue集成three.js并加載glb、gltf、FBX、json模型的場景分析

    這篇文章主要介紹了Vue集成three.js,并加載glb、gltf、FBX、json模型,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • 詳解vuex中的this.$store.dispatch方法

    詳解vuex中的this.$store.dispatch方法

    這篇文章主要介紹了vuex中的this.$store.dispatch方法,必須要用commit(‘SET_TOKEN’,?tokenV)調用mutations里的方法,才能在store存儲成功,需要的朋友可以參考下
    2022-11-11
  • Vue3和Vue2的slot-scope插槽用法解讀

    Vue3和Vue2的slot-scope插槽用法解讀

    這篇文章主要介紹了Vue3和Vue2的slot-scope插槽用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue點擊彈窗自動觸發(fā)點擊事件的解決辦法(模擬場景)

    vue點擊彈窗自動觸發(fā)點擊事件的解決辦法(模擬場景)

    本文通過案例場景給大家介紹vue點擊彈窗自動觸發(fā)點擊事件的解決辦法,通過兩種方法給大家分享vue 自動觸發(fā)點擊事件的處理方法,對vue自動觸發(fā)點擊事件相關知識感興趣的朋友一起看看吧
    2021-05-05
  • vue3自定義hooks/可組合函數方式

    vue3自定義hooks/可組合函數方式

    這篇文章主要介紹了vue3自定義hooks/可組合函數方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue項目打包部署_nginx代理訪問方法詳解

    vue項目打包部署_nginx代理訪問方法詳解

    今天小編就為大家分享一篇vue項目打包部署_nginx代理訪問方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 解決antd 表單設置默認值initialValue后驗證失效的問題

    解決antd 表單設置默認值initialValue后驗證失效的問題

    這篇文章主要介紹了解決antd 表單設置默認值initialValue后驗證失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論