您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)vue項(xiàng)目中mintui彈窗彈起來(lái)底部頁(yè)面滾動(dòng)怎么解決,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
經(jīng)過(guò)dom層層注釋縮小反饋終于找到問(wèn)題所在。
問(wèn)題經(jīng)過(guò)
我在彈起彈窗的時(shí)候,設(shè)置了popupVisible為true
然后觸發(fā)了vue的updated生命周期鉤子函數(shù)
然后我在這個(gè)函數(shù)里面做了去this.$refs.container.offsetHeight導(dǎo)致頁(yè)面重繪
然后就導(dǎo)致了底部頁(yè)面向上滾動(dòng)
解決辦法
去掉updated函數(shù)里面的重繪方法
補(bǔ)充知識(shí):項(xiàng)目總結(jié)之關(guān)于vue中使用mint-ui的mt-popup出現(xiàn)滾動(dòng)穿透問(wèn)題的解決總結(jié)
說(shuō)實(shí)話,使用Mint-ui這個(gè)ui組件的過(guò)程中遇到了很多問(wèn)題,這個(gè)ui組件問(wèn)題真多。
先說(shuō)今天的主題吧,我在使用popup選擇框的時(shí)候和datepicker時(shí)間選擇器的時(shí)候出現(xiàn)了滾動(dòng)穿透的問(wèn)題,特別是在ios上面。
找了好多方法,最后同事給出了一個(gè)好的方法,很簡(jiǎn)潔,于是就想著總結(jié)下來(lái)。
防止?jié)L動(dòng)穿透 只需加入@touchmove.native.stop.prevent 阻止默認(rèn)根元素的默認(rèn)事件就可以了,native是關(guān)鍵,這個(gè)表示根元素的意思,也就是body或者h(yuǎn)tml
代碼如下:
Popup組件:
<mt-popup v-model="popupVisible" position="bottom"> ... </mt-popup> // 防止?jié)L動(dòng)穿透 只需加入@touchmove.native.stop.prevent 阻止默認(rèn)根元素的默認(rèn)事件就可以了native是關(guān)鍵,這個(gè)表示根元素的意思,也就是body或者h(yuǎn)tml <mt-popup v-model="popupVisible" position="bottom" @touchmove.native.stop.prevent> ... </mt-popup>
注意當(dāng)mt-popup中還有div等子元素的時(shí)候,一定要注意,這個(gè)時(shí)候可能會(huì)有一些問(wèn)題,會(huì)出現(xiàn)mt-popup這個(gè)元素也滾動(dòng)不了的情況,所以說(shuō)如果mt-popup本身不需要滾動(dòng)的話,加了@touchmove.native.stop.prevent,底部頁(yè)面就不會(huì)跟著滑動(dòng),如果mt-popup里面有滾動(dòng)條需要滾動(dòng)的話,可能就滾動(dòng)不了,這個(gè)時(shí)候需要采取常規(guī)方法了,如下:
// 解決方式,通過(guò)監(jiān)聽(tīng)popupVisible變量,在彈窗出現(xiàn)后禁止body節(jié)點(diǎn)touchMove事件,彈窗消失后恢復(fù)body節(jié)點(diǎn)的touchMove事件
//html 如下 <mt-popup v-model="popupVisible" position="bottom"> ... </mt-popup> // js 如下 const handler = function(e) { e.preventDefault(); } // vue實(shí)例內(nèi) watch: { popupVisible: function (val) { if(val) { document.getElementsByTagName('body')[0].addEventListener('touchmove', this.handler, { passive: false }); } else { document.getElementsByTagName('body')[0].removeEventListener('touchmove', this.handler, { passive: false }); } } }
Datetime Picker:
<mt-datetime-picker ref="picker" type="time" v-model="pickerValue" @touchmove.native.stop.prevent> </mt-datetime-picker>
對(duì)于時(shí)間組件加了@touchmove.native.stop.prevent,選擇時(shí)間滾動(dòng)的時(shí)候底部頁(yè)面就不會(huì)跟著滾動(dòng)了,很完美。
上述就是小編為大家分享的vue項(xiàng)目中mintui彈窗彈起來(lái)底部頁(yè)面滾動(dòng)怎么解決了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。