如何解決element-ui中select下拉框popper超出彈框問題
問題場(chǎng)景
如下:

嘗試了好幾種解決方法,比如從下拉框el-popper使用fixed定位入手,修改popper-append-to-body,或者修改z-index
看了源碼后又嘗試監(jiān)聽表格滾動(dòng)使用`this.$refs.table.handleClose()`關(guān)閉popper,但都未達(dá)到我想要的效果。
嘗試了網(wǎng)上一些解決方案,跟我之前的嘗試一樣,只有拖動(dòng)滾動(dòng)條停止的時(shí)候popper消失,滑動(dòng)鼠標(biāo)滾輪則無效。無奈我只好直接修改源碼的visible來關(guān)閉popper,
解決方法如下:
解決方法
1、先把element-ui下select.vue的源碼單獨(dú)拎出來
添加自己的代碼(另外還需修改導(dǎo)入路徑)形成組件Select.vue。
改動(dòng)如下:
(1) 修改源碼import路徑
import Emitter from 'element-ui/src/mixins/emitter';
import Focus from 'element-ui/src/mixins/focus';
import Locale from 'element-ui/src/mixins/locale';
import ElInput from 'element-ui/packages/input';
import ElTag from 'element-ui/packages/tag';
import ElScrollbar from 'element-ui/packages/scrollbar';
import debounce from 'element-ui/node_modules/throttle-debounce/debounce';
import Clickoutside from 'element-ui/src/utils/clickoutside';
import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event';
import scrollIntoView from 'element-ui/src/utils/scroll-into-view';
import { getValueByPath, valueEquals, isIE, isEdge } from 'element-ui/src/utils/util';
import { isKorean } from 'element-ui/src/utils/shared';
import NavigationMixin from 'element-ui/packages/select/src/navigation-mixin';
import ElOption from 'element-ui/packages/select/src/option';
import ElSelectMenu from 'element-ui/packages/select/src/select-dropdown';
(2) 在select.vue源碼的基礎(chǔ)上接收父組件傳來的scrollTop,監(jiān)聽scrollTop的改變使visible為false。
props: {
// 源碼上新增:父組件表格滾動(dòng)條
scrollTop: {
type: Number,
default: 0,
},
},
watch: {
// 源碼上新增:滾動(dòng)條滾動(dòng)就隱藏下拉框
scrollTop() {
this.visible = false;
},
}
2、把el-select改成Select組件
監(jiān)聽滾動(dòng)條的滾動(dòng),滾動(dòng)就隱藏下拉框


主要代碼如下:
import Select from '@/components/common/select';
components: { Select },
data() {
return {
tempTableBody: null,
// 滾動(dòng)條位置,用來判斷滾動(dòng)條滾動(dòng)隱藏下拉框
scrollTop: 0,
};
},
mounted() {
this.onscroll();
},
methods: {
// 監(jiān)聽table的bodyWrapper的滾動(dòng)
onscroll() {
this.$nextTick(() => {
this.tempTableBody= this.$refs.editTempTable.bodyWrapper;
if (this.tempTableBody) {
this.tempTableBody.addEventListener('scroll', this.handleScroll, false);
}
});
},
// 滾動(dòng)條出現(xiàn)滾動(dòng)就改變scrollTop的值
handleScroll() {
this.scrollTop = this.tempTableBody.scrollTop;
// this.$refs.matchField.handleClose();
},
}
總結(jié)
至此,就成功解決這個(gè)問題了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- element-ui中select下拉框加載大數(shù)據(jù)渲染優(yōu)化方式
- 去除element-ui下拉框的下拉箭頭的實(shí)現(xiàn)
- 基于element-ui中el-select下拉框選項(xiàng)過多的優(yōu)化方案
- 關(guān)于element-ui?select?下拉框位置錯(cuò)亂問題解決
- element-ui+vue-treeselect下拉框的校驗(yàn)過程
- 解決element-ui的下拉框有值卻無法選中的情況
- Vue + Element-ui的下拉框el-select獲取額外參數(shù)詳解
- 在element-ui的select下拉框加上滾動(dòng)加載
- 使用Vant完成DatetimePicker 日期的選擇器操作
- 如何修改element-ui日期下拉框datetimePicker的背景色樣式
相關(guān)文章
Vant中Popover氣泡彈出框位置錯(cuò)亂問題解決
這篇文章主要為大家介紹了Vant中Popover氣泡彈出框位置錯(cuò)亂問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
vue實(shí)現(xiàn)下拉框二級(jí)聯(lián)動(dòng)效果的實(shí)例代碼
這篇文章主要介紹了vue實(shí)現(xiàn)下拉框二級(jí)聯(lián)動(dòng)效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11
Vue cli+mui 區(qū)域滾動(dòng)的實(shí)例代碼
下面小編就為大家分享一篇Vue cli+mui 區(qū)域滾動(dòng)的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Vue項(xiàng)目npm run dev啟動(dòng)失敗的6個(gè)常見原因(附解決方案)
Vue 項(xiàng)目啟動(dòng)是前端開發(fā)的基礎(chǔ)操作,但很多新手(甚至有經(jīng)驗(yàn)的開發(fā)者)都會(huì)遇到npm run dev(或?npm run serve)啟動(dòng)失敗的問題,下面就來介紹一下失敗的原因及解決方案,感興趣的可以了解一下2026-01-01
實(shí)現(xiàn)vuex與組件data之間的數(shù)據(jù)同步更新方式
今天小編就為大家分享一篇實(shí)現(xiàn)vuex與組件data之間的數(shù)據(jù)同步更新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11
vue搜索高亮popsearch組件的實(shí)現(xiàn)示例
有時(shí)候給頁面內(nèi)容添加一個(gè)關(guān)鍵詞搜索功能,如果搜索結(jié)果能夠像瀏覽器搜索一樣高亮顯示,那找起來就會(huì)很明顯體驗(yàn)會(huì)好很多,本文就來介紹一下vue搜索高亮popsearch組件的實(shí)現(xiàn)示例,感興趣的可以了解一下2023-09-09
element?實(shí)現(xiàn)導(dǎo)航欄收起展開功能及思路
這篇文章主要介紹了element?實(shí)現(xiàn)導(dǎo)航欄收起展開功能,實(shí)現(xiàn)思路先給 el-menu加上 :collapse="isCollapse" 屬性,這個(gè)屬性也是 element 上的一個(gè)參數(shù),意思為是否開啟折疊動(dòng)畫,在 data 中定義 isCollapse ,用 true 和 false 控制展開與收起,需要的朋友可以參考下2023-01-01

