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

嘗試了好幾種解決方法,比如從下拉框el-popper使用fixed定位入手,修改popper-append-to-body,或者修改z-index
看了源碼后又嘗試監(jiān)聽表格滾動使用`this.$refs.table.handleClose()`關(guān)閉popper,但都未達(dá)到我想要的效果。
嘗試了網(wǎng)上一些解決方案,跟我之前的嘗試一樣,只有拖動滾動條停止的時候popper消失,滑動鼠標(biāo)滾輪則無效。無奈我只好直接修改源碼的visible來關(guān)閉popper,
解決方法如下:
解決方法
1、先把element-ui下select.vue的源碼單獨拎出來
添加自己的代碼(另外還需修改導(dǎo)入路徑)形成組件Select.vue。
改動如下:
(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: {
// 源碼上新增:父組件表格滾動條
scrollTop: {
type: Number,
default: 0,
},
},
watch: {
// 源碼上新增:滾動條滾動就隱藏下拉框
scrollTop() {
this.visible = false;
},
}
2、把el-select改成Select組件
監(jiān)聽滾動條的滾動,滾動就隱藏下拉框


主要代碼如下:
import Select from '@/components/common/select';
components: { Select },
data() {
return {
tempTableBody: null,
// 滾動條位置,用來判斷滾動條滾動隱藏下拉框
scrollTop: 0,
};
},
mounted() {
this.onscroll();
},
methods: {
// 監(jiān)聽table的bodyWrapper的滾動
onscroll() {
this.$nextTick(() => {
this.tempTableBody= this.$refs.editTempTable.bodyWrapper;
if (this.tempTableBody) {
this.tempTableBody.addEventListener('scroll', this.handleScroll, false);
}
});
},
// 滾動條出現(xiàn)滾動就改變scrollTop的值
handleScroll() {
this.scrollTop = this.tempTableBody.scrollTop;
// this.$refs.matchField.handleClose();
},
}
總結(jié)
至此,就成功解決這個問題了。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- element-ui中select下拉框加載大數(shù)據(jù)渲染優(yōu)化方式
- 去除element-ui下拉框的下拉箭頭的實現(xiàn)
- 基于element-ui中el-select下拉框選項過多的優(yōu)化方案
- 關(guān)于element-ui?select?下拉框位置錯亂問題解決
- element-ui+vue-treeselect下拉框的校驗過程
- 解決element-ui的下拉框有值卻無法選中的情況
- Vue + Element-ui的下拉框el-select獲取額外參數(shù)詳解
- 在element-ui的select下拉框加上滾動加載
- 使用Vant完成DatetimePicker 日期的選擇器操作
- 如何修改element-ui日期下拉框datetimePicker的背景色樣式
相關(guān)文章
vue3采用xlsx庫實現(xiàn)本地上傳excel文件功能
這篇文章主要為大家詳細(xì)介紹了vue3如何采用xlsx庫實現(xiàn)本地上傳excel文件功能,并且前端解析為Json數(shù)據(jù),感興趣的小伙伴可以了解一下2025-02-02
vue 中動態(tài)綁定class 和 style的方法代碼詳解
這篇文章主要介紹了vue 中動態(tài)綁定class 和 style的方法,通過實例結(jié)合的形式給大家接受的非常詳細(xì),需要的朋友參考下吧2018-06-06
Vue 實現(xiàn)復(fù)制功能,不需要任何結(jié)構(gòu)內(nèi)容直接復(fù)制方式
今天小編就為大家分享一篇Vue 實現(xiàn)復(fù)制功能,不需要任何結(jié)構(gòu)內(nèi)容直接復(fù)制方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
vue使用html2canvas和jspdf將html轉(zhuǎn)成pdf
在前端開發(fā)中, html轉(zhuǎn)pdf是最常見的需求,下面這篇文章主要給大家介紹了關(guān)于vue如何使用html2canvas和jspdf將html轉(zhuǎn)成pdf的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03

