在写下拉的时候,有时候在出了滚动条的情况下,我们去滑动滚动条,会发现一个有趣的现象,下拉并没有自己关闭,常常需要用户自己去进行一个点击才会关闭,在某种程度上,会有些繁琐。如果不关闭,在下拉选项比较多的情况下,会对界面进行一个不必要的界面遮挡,极大程度上影响界面的美观。提出一个想法,我能不能在滚动条滑动的时候,让下拉框自己进行关闭呢?
Element UI 的 el-select
组件默认并不会在滚动页面时自动关闭下拉列表。但是,我们可以通过监听窗口的 scroll
事件来实现这一功能。当检测到页面滚动时,你可以手动触发 el-select
的关闭。
在 Vue 中,在组件的生命周期钩子或者 mounted
函数中添加对 window
的 scroll
事件监听器。当页面滚动时,监听器会调用一个方法来关闭所有 el-select
下拉菜单。
上代码: ref="selectRef"
<el-select
ref="selectRef"
v-model="selectedYear"
@change="onYearSelected"
placeholder="请选择历史版本"
size="small"
>
<el-option
v-for="(yearOption, index) in choiseValueYearWithIndex"
:key="index"
:label="yearOption.VersionTag"
:value="yearOption.Year"
>
</el-option>
</el-select>
mounted() {
this.$nextTick(() => {
window.addEventListener("scroll", this.handleScroll);
});
},
methods: {
handleScroll() {
this.$refs.selectRef.blur(); // 关闭 select 下拉菜单
},
}