亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

vue中解決拖拽改變存在iframe的div大小時卡頓問題

瀏覽:96日期:2022-12-31 10:02:59

寫在最前

針對于在vue中實現(xiàn)拖拽改變兩左右個div大小的方式,請查看上一篇文章《vue中實現(xiàn)拖動調(diào)整左右兩側(cè)div的寬度》。此文章主要針對于實際應用中需要拖拽改變大小的組件中使用iframe框架時存在明顯卡頓的問題,比如這樣,右側(cè)div中使用了一個iframe組件,導致實際操作中出現(xiàn)兩個問題,一個是拖不動,另外一個是無法根據(jù)鼠標移動,快速響應,甚至在監(jiān)聽鼠標的按下和松開事件上都有明顯的卡頓問題。如果去除右側(cè)iframe框架,則沒有問題。

有iframe情況

vue中解決拖拽改變存在iframe的div大小時卡頓問題

無iframe情況

vue中解決拖拽改變存在iframe的div大小時卡頓問題

vue中解決拖拽改變存在iframe的div大小時卡頓問題

問題原因&解決思路

問題原因我不知道,不過這個博客給了我解決思路《解決jqueryUI的拖拽,如果元素中含有iframe,拖動卡的問題》,還有以下說法,他們的解決思路一樣的。因此我猜想是鼠標的監(jiān)聽造成的影響,在我們拖拽的時候,因為拖拽過快,很容易出現(xiàn)鼠標移動超過拖拽范圍的情況,此時的鼠標可能已經(jīng)在iframe上方,從而會同時加載iframe中的內(nèi)容,導致出現(xiàn)卡頓。

總之,解決的思路就是在拖動的時候,在iframe上方添加一個透明的遮罩層,然后在停止拖拽的時候讓其消失。這樣問題就可以完美解決了。

vue中解決拖拽改變存在iframe的div大小時卡頓問題

解決方式共有兩節(jié),一節(jié)包含我解決過程中遇到的問題,一節(jié)是直接的解決方式,如果想直接查看解決方式的,請直接跳轉(zhuǎn)至解決方式那一節(jié)

解決方式(含解決過程中遇到的問題)

HTML組件部分源代碼

這是實現(xiàn)拖拽的組件代碼,如果不了解我原本使用的實現(xiàn)方式,請參考《vue中實現(xiàn)拖動調(diào)整左右兩側(cè)div的寬度》

<div ref='box'> <div ref='left'> </div> <div ref='resize'> ⋮ </div> <div ref='mid'> <!--在此處添加遮罩層--> <iframe name='iFrame1' frameborder='0' scrolling='auto' :src='http://www.aoyou183.cn/bcjs/iframeUrl'> </iframe> </div> </div>

添加遮罩層

在以上標注的地方,添加如下代碼

<div class='iframeDiv'></div>

再添加遮罩層的css樣式即可,此時最好測試點擊一下,是不是原來的ifame部分已經(jīng)不能點擊,而且拖拽起來已經(jīng)不再卡頓了

/* 添加透明遮罩層 */ .iframeDiv { width: 100%; height: 100%; position: absolute; z-index: 1111; filter: alpha(opacity=0); opacity: 0; background: transparent; margin-top: 30px; /*display: none;*/ }

實現(xiàn)遮罩層在拖拽時出現(xiàn)

我的解決辦法是直接在拖拽區(qū)域添加監(jiān)聽鼠標的按下和松開事件,按下后遮罩層出現(xiàn),松開后消失,因此修改resize部分,添加onmouseup&mousedown,分別傳入?yún)?shù),用于修改iframeDiv的css樣式中的display屬性值

<div ref='resize' @mousedown='changeIframeDivStyle(’’)' @onmouseup='changeIframeDivStyle(’none’)' >⋮ </div>

然后添加changeIframeDivStyle方法,因為getElementByClassName返回的是個數(shù)組集合,但是我又確認自己頁面只有一個iframeDiv,所以選擇了iframe[0],如果想使用getElementById也可以

changeIframeDivStyle(display) { var iframeDiv = document.getElementsByClassName(’iframeDiv’); iframeDiv[0].style.display = display; },

到此基本就算完成大半了,mousedown為鼠標按下事件,按下后設置display為空,即遮罩層出現(xiàn),onmouseup為鼠標松開事件,松開后遮罩層消失,達到不影響用戶操作查看iframe中內(nèi)容的目的

頁面初始化時遮罩層設置問題

按照實際來講,初始化進入頁面時,我們就不應該留有遮罩層,所以按照我的想法來講,就是直接在css中修改樣式,但是如上所見,我把它注釋掉了,至于為什么,先賣個關(guān)子,大家修改后嘗試一下,看看拖拽時卡頓不卡頓

display: none;

在我本以為這樣就可以解決問題時,我發(fā)現(xiàn),首次進入頁面,直接進行拖拽,依舊會存在卡頓,但是拖拽過一次之后,就不會再有問題了。這個問題,,我又不知道為什么了,于是,既然它需要拖拽一次之后才不會卡頓,那我就直接注釋掉了css中這個display樣式,反而在 mounted中添加方法,這樣反而成功了,雖然搞不明白兩者的差距,但是問題總算是解決了,如果有知道原因的朋友,可以在評論中分享出來,供大家學習學習。

this.changeIframeDivStyle(’none’);

解決方式

在iframe上添加透明遮罩層樣式

<div ref='box'> <div ref='left'> </div> <div ref='resize'> ⋮ </div> <div ref='mid'> <!--在此處添加遮罩層--> <div class='iframeDiv'></div> <iframe name='iFrame1' frameborder='0' scrolling='auto' :src='http://www.aoyou183.cn/bcjs/iframeUrl'> </iframe> </div> </div>

添加CSS樣式

.iframeDiv { width: 100%; height: 100%; position: absolute; z-index: 1111; filter: alpha(opacity=0); opacity: 0; background: transparent; margin-top: 30px; /*display: none;*/ }

添加鼠標的監(jiān)聽事件

在拖拽區(qū)添加鼠標的按下事件和松開事件

<div ref='resize' @mousedown='changeIframeDivStyle(’’)' @onmouseup='changeIframeDivStyle(’none’)' >⋮ </div>

添加方法

changeIframeDivStyle(display) { var iframeDiv = document.getElementsByClassName(’iframeDiv’); iframeDiv[0].style.display = display; },

設置頁面初始化加載

this.changeIframeDivStyle(’none’);

到此這篇關(guān)于vue中解決拖拽改變存在iframe的div大小時卡頓問題的文章就介紹到這了,更多相關(guān)vue拖拽div卡頓內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 尤物视频在线观看入口 | 欧美伊人久久久久久久久影院 | 久草热播| 在线观看激情偷拍视频 | 中国一级黄色毛片 | 亚洲国产精品欧美日韩一区二区 | 成人小视频免费 | 91精品啪在线看国产网站 | 三级理论中文字幕在线播放 | 青青影院一区二区免费视频 | 欧美黑人换爱交换乱理伦片 | 久久久久青草线蕉亚洲麻豆 | 在线免费视频你懂的 | 成人久久久久久 | 丰满大乳女啪啪中文字幕 | 色综合久久手机在线 | 成人午夜大片免费看爽爽爽 | 成年免费大片黄在线观看岛国 | 国产精品久久久久免费a∨ 国产精品久久久久这里只有精品 | 哪个网站能看毛片 | 亚洲综合亚洲国产尤物 | 高清国产一级毛片国语 | 亚洲无线视频 | 国产免费一级高清淫曰本片 | 濑亚美莉vs黑人欧美视频 | 香蕉久久高清国产精品免费 | 日本xxx护士与黑人 日本xxx免费视频 | 久久综合偷拍 | 国产成人无精品久久久 | 国产福利视频奶水在线 | 热久久最新地址 | 国产综合色精品一区二区三区 | 永久在线观看视频 | 欧美一级毛片免费大全 | 国产一级淫片a免费播放口之 | 欧美一区二区手机在线观看视频 | 国产九九视频在线观看 | 国产亚洲3p一区二区三区 | 亚洲一区亚洲二区 | 国产精欧美一区二区三区 | 福利午夜在线 |