Vue中ElementUI結(jié)合transform使用時(shí)如何修復(fù)el-select彈框定位不準(zhǔn)確問題
在大屏開發(fā)中,比如將1920*1080放到更大像素(3500*2400)大屏上演示,此時(shí)需要使用到transform來對(duì)頁面進(jìn)行縮放,但是此時(shí)發(fā)現(xiàn)彈框定位出錯(cuò)問題,無法準(zhǔn)備定位到實(shí)際位置。之前寫過一篇講解的是ElementUI中的<el-date-picker />組件修復(fù)定位問題,經(jīng)過網(wǎng)友不斷發(fā)現(xiàn)和提問,原來不同組件解決方案是不同的,這講解下 <el-select />組件如何修復(fù)。
<el-date-picker />組件地址:http://m.fzitv.net/javascript/3130744g8.htm
接下來我們講下select組件的popper彈框錯(cuò)位問題。

一、html代碼
這里還是使用@focus事件也觸發(fā)修復(fù)定位功能。
<el-select ref="elSelect" placeholder="商機(jī)狀態(tài)" size="small" v-model="proStage" :popper-append-to-body="false" @focus="focusFixDateSelectPosition" > <el-option v-for="item in stageList" key="item.FieldValue" label="item.FieldLabel" value="item.FieldValue" > </el-option> </el-select>
二、focus事件
因?yàn)閟elect組件的focus事件返回的參數(shù)為FocusEvent ,則內(nèi)部數(shù)據(jù)無法滿足popper彈框的調(diào)整,如下圖:

要獲取和picker一樣的數(shù)據(jù),得使用$refs獲取,代碼如下:
/**
* 解決Select定位問題
*/
focusFixDateSelectPosition(){
let e = this.$refs['elSelect'].$refs['popper'];
console.log('e', e);
}如下圖,此時(shí)已拿到和picker一樣的數(shù)據(jù)結(jié)果,可以通過popperJS和$el進(jìn)行修復(fù)定準(zhǔn)了:

三、回調(diào)函數(shù)
這里直接調(diào)用e.popperJS會(huì)出現(xiàn)undefined或null結(jié)果,所以添加定時(shí)器判斷如果未獲取對(duì)object對(duì)象,則回調(diào)函數(shù)直到獲取e.popperJS對(duì)象為止,代碼如下:
/**
* 回調(diào)函數(shù)
*/
const selectCallback = e => {
setTimeout(() => {
if('undefined'===typeof e['popperJS'] || null == e['popperJS']){
selectCallback(e);
}else{
e.popperJS.state.position = 'absolute';
e.popperJS.update();
setTimeout(() => {
e.$el.style.top = 'inherit';
e.$el.style.left = '0';
}, 20);
}
}, 20);
}然后將selectCallback回調(diào)函數(shù)添加到focusFixDateSelectPosition中,代碼如下:
focusFixDateSelectPosition(eve){
let e = this.$refs['elSelect'].$refs['popper'];
selectCallback(e);
}此時(shí),下拉框錯(cuò)位問題則解決了,如下圖:

到此這篇關(guān)于Vue中ElementUI結(jié)合transform使用時(shí),修復(fù)el-select彈框定位不準(zhǔn)確問題的文章就介紹到這了,更多相關(guān)Vue ElementUI 修復(fù)el-select彈框定位不準(zhǔn)確內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue elementui表格獲取某行數(shù)據(jù)(slot-scope和selection-change方法使用)
- 解決vue elementUI 使用el-select 時(shí) change事件的觸發(fā)問題
- Vue中使用 ElementUi 的 el-select 實(shí)現(xiàn)全選功能(思路詳解)
- vue elementUI select下拉框設(shè)置默認(rèn)值(賦值)失敗的解決
- vue elementUI select下拉框如何設(shè)置默認(rèn)值
- vue elementui select標(biāo)簽監(jiān)聽change事件失效問題
相關(guān)文章
vue修改vue項(xiàng)目運(yùn)行端口號(hào)的方法
本篇文章主要介紹了vue修改vue項(xiàng)目運(yùn)行端口號(hào)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
vue(element ui)使用websocket及心跳檢測(cè)方式
這篇文章主要介紹了vue(element ui)使用websocket及心跳檢測(cè)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot+Vue3實(shí)現(xiàn)文件的上傳和下載功能
上傳文件和下載文件是我們平時(shí)經(jīng)常用到的功能,接下來就讓我們用SpringBoot,Vue3和ElementPlus組件實(shí)現(xiàn)文件的上傳和下載功能吧,感興趣的朋友跟隨小編一起看看吧2023-01-01
vue3?內(nèi)容過多出現(xiàn)滾動(dòng)條時(shí)滾動(dòng)條自動(dòng)定位到末端的操作代碼
這篇文章主要介紹了vue3?內(nèi)容過多出現(xiàn)滾動(dòng)條時(shí)滾動(dòng)條自動(dòng)定位到末端的操作代碼,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-05-05
vue項(xiàng)目中如何配置env環(huán)境的實(shí)現(xiàn)
本文主要介紹了vue項(xiàng)目中如何配置env環(huán)境的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
如何實(shí)現(xiàn)vue加載指令 v-loading
在日常的開發(fā)中,加載效果是非常常見的,但是怎么才能方便的使用,本文介紹如何實(shí)現(xiàn)vue加載指令 v-loading,感興趣的朋友一起看看吧2024-01-01

