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

一、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事件
因為select組件的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);
}如下圖,此時已拿到和picker一樣的數(shù)據(jù)結(jié)果,可以通過popperJS和$el進(jìn)行修復(fù)定準(zhǔn)了:

三、回調(diào)函數(shù)
這里直接調(diào)用e.popperJS會出現(xiàn)undefined或null結(jié)果,所以添加定時器判斷如果未獲取對object對象,則回調(diào)函數(shù)直到獲取e.popperJS對象為止,代碼如下:
/**
* 回調(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);
}此時,下拉框錯位問題則解決了,如下圖:

到此這篇關(guān)于Vue中ElementUI結(jié)合transform使用時,修復(fù)el-select彈框定位不準(zhǔn)確問題的文章就介紹到這了,更多相關(guān)Vue ElementUI 修復(fù)el-select彈框定位不準(zhǔn)確內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue(element ui)使用websocket及心跳檢測方式
這篇文章主要介紹了vue(element ui)使用websocket及心跳檢測方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot+Vue3實現(xiàn)文件的上傳和下載功能
上傳文件和下載文件是我們平時經(jīng)常用到的功能,接下來就讓我們用SpringBoot,Vue3和ElementPlus組件實現(xiàn)文件的上傳和下載功能吧,感興趣的朋友跟隨小編一起看看吧2023-01-01
vue3?內(nèi)容過多出現(xiàn)滾動條時滾動條自動定位到末端的操作代碼
這篇文章主要介紹了vue3?內(nèi)容過多出現(xiàn)滾動條時滾動條自動定位到末端的操作代碼,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-05-05
vue項目中如何配置env環(huán)境的實現(xiàn)
本文主要介紹了vue項目中如何配置env環(huán)境的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

