当下拉框打开的时候,滑动滚动条,怎么关闭下拉框???

在写下拉的时候,有时候在出了滚动条的情况下,我们去滑动滚动条,会发现一个有趣的现象,下拉并没有自己关闭,常常需要用户自己去进行一个点击才会关闭,在某种程度上,会有些繁琐。如果不关闭,在下拉选项比较多的情况下,会对界面进行一个不必要的界面遮挡,极大程度上影响界面的美观。提出一个想法,我能不能在滚动条滑动的时候,让下拉框自己进行关闭呢?

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 下拉菜单
    },
}
总结:我们首先在 mounted 生命周期钩子中添加了一个 scroll 事件监听器,当页面滚动时,handleScroll 方法会被调用。在 handleScroll 方法中,我们通过 this.$refs.selectRef.blur() 来关闭 el-select 的下拉菜单。
请注意,ref 属性被添加到了 el-select 标签中,这样我们才能在组件实例中通过 $refs 访问到该元素并调用其方法。如果你有多个 el-select,你可能需要为每个 el-select 分配一个唯一的 ref,并在 handleScroll 方法中循环遍历所有的 el-select 元素来关闭它们。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值