Element-Plus select选择器-下拉组件错位bug(有高度滚动时)

这篇具有很好参考价值的文章主要介绍了Element-Plus select选择器-下拉组件错位bug(有高度滚动时)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. bug重现

  • 由于项目不便展示,因此在官网复现bug
    https://element-plus.org/zh-CN/component/select.html#基础用法

Element-Plus select选择器-下拉组件错位bug(有高度滚动时),web-其他,web项目开发,web-vue,前端,elementui


Element-Plus select选择器-下拉组件错位bug(有高度滚动时),web-其他,web项目开发,web-vue,前端,elementui文章来源地址https://www.toymoban.com/news/detail-520240.html

2. 调试

  1. 源码调试时发现下拉菜单是直接放在body 元素里,这时候希望它不要直接放在body里, 查阅文档看到这两个属性:
    Element-Plus select选择器-下拉组件错位bug(有高度滚动时),web-其他,web项目开发,web-vue,前端,elementui
  2. 但是添加了上面的属性后,出现了新的问题,要么是不生效,要么是下拉菜单不显示了,但是这个时候通过调试代码已经发现 下拉菜单不是直接放在body里了,只是展示有问题;

3. 解决

  • popper-append-to-body 属性被官方标注为废弃,因此在这里使用 :teleported=“false”
  • 这里只提供解决方法,实际项目中需要封装一个全局组件,并以该全局组件代替 select选择器,组件中通过添加 v-bind=“$attrs” , 可以更简便的在使用时传递 element-plus 需要的属性.
  • 注意:
    • 在vue3中,跨组件传递属性函数只用 v-bind=“$attrs” 即可;
    • 在vue2中,跨组件传递属性使用 v-bind=“$attrs” , 跨组件传递函数使用 v-on=”$listeners”
<template>
  <el-select
    style="position: relative"
    :teleported="false"
    @visible-change="
      (val) => {
        // do something
        controlSelectMenusFn(val);
      }
    "
  >
    <el-option ...></el-option>
  </el-select>
</template>

<script setup lang="ts">
  import { ref } from 'vue';

  const controlSelectMenus = ref('none');
  const controlSelectMenusFn = (val) => {
    if (val) {
      controlSelectMenus.value = 'line';
    } else {
      controlSelectMenus.value = 'none';
    }
  };
</script>
<style lang="less" scoped>
  ::v-deep(.el-popper.is-pure.is-light.el-select__popper) {
    display: v-bind(controlSelectMenus) !important;
  }
</style>

到了这里,关于Element-Plus select选择器-下拉组件错位bug(有高度滚动时)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-plus的日期选择器限定选择范围

    提示:这里可以添加本文要记录的大概内容: element-plus的日期选择器限定选择范围,由于数据的获取范围限定,需要前端处理一下日期的选择范围 提示:以下是本篇文章正文内容,下面案例可供参考 提示:这里对文章进行总结: 这里只收集我目前为止在项目的过程中遇到的

    2024年02月13日
    浏览(40)
  • Vue3 element-plus el-select 无法选中,又不报错

    html 结构 js 代码 点击下拉选项,输入框无法选中 原因:ref=“conditionForm” 和 :model=“conditionForm” 冲突了, 4-1. 再Vue2里面 :model=“conditionForm” 绑定的是 conditionForm 变量, ref=“conditionForm” 绑定的是conditionForm字符串 v-model=“conditionForm.personnel” 绑定的 conditionForm 变量下属性

    2023年04月27日
    浏览(47)
  • vue2 - 详细介绍element UI中在el-select嵌套el-tree树形控件实现下拉选择树型结构数据的效果实例(组件封装)

    在项目上常用使用到 el-select 和 el-tree 组合实现,记录下两者结合的实现过程。(代码以及注释清晰明了,代码直接使用即可) 要求根据项目接口提供的数据,el-tree 里的数据是一次性返回来的,点击最后一层级时,请求接口,在点击层级下方追加数据追加的数据要显示勾

    2024年04月15日
    浏览(67)
  • vue3+element-plus 通过v-infinite实现下拉滚动无限加载

    v-infinite官网 v-infinite-scroll无限滚动组件使用详解  官网给到的基础案例: 自己写了一个简单的demo: 当使用v-infinite时,控制台会报错:  原因: 官方上的Issues解释是需要nextTick()之后再去显示 解决方法是组件挂载完成再去显示el-select组件 所以在上面demo中select组件加了v-if,

    2024年02月09日
    浏览(52)
  • element-plus修改下拉菜单Dropdown-Item 样式(popper-class)

    当我们对下拉菜单内的item的样式进行修改时,我们可以使用 但是这样就会导致全局的下拉框样式都变为一样,为了避免这种情况,我们可以使用dropdown中的popper-class属性

    2024年02月12日
    浏览(60)
  • element el-select下拉框选择失效

    2023.1.11今天我学习了使用element el-select组件下拉框选择数据失效的原因以及解决办法。 如图:   当我已经选择启用状态的时候,然后点击停用状态没反应。 是因为在配置表单的过程中,重复使用了这个字段。 如: 就是在表单中重复使用了status这个字段,然后导致选择失效。

    2024年02月16日
    浏览(46)
  • Vue3 封装 element-plus 图标选择器

    效果一: 效果二:   效果一的这个是把全部的icon图标都让它显示出来,让我们自己选择说选图标 2.1. 全局注册 icon 组件 2.2. 组件实现  2.3. 使用  效果二的这个是渲染后端返回的icon图标 3.1. 全局注册 icon 组件 3.2. 组件实现  3.3. 使用 

    2024年02月07日
    浏览(101)
  • element-plus的el-select实现触底加载更多(新版本报错踩坑)

    element-plus新版增加了一个属性,且默认为true,使得下拉菜单被插入到了body元素下。即.el-select下默认不包含.el-select-dropdown了。 当依旧按照之前的方式,封装自定义指令,实现滚动到el-select下拉菜单的底部,加载更多数据的功能时就会报错。 原逻辑:  报错 原因也就是前言中

    2024年02月08日
    浏览(58)
  • element-plus DateTimePicker日期选择器,限制指定日期和时间不可选择

    element-plus日期选择器,在指定日期时间前不可选择。 限制 日期 选择,使用 disabled-date 限制 小时 选择,使用 disabled-hours 限制 分钟 选择,使用 disabled-minutes 限制 毫秒 选择,使用 disabled-seconds 指定日期当天的时间有限制: 其他日期的时间无限制: 全部代码: 注意:选择面板

    2024年02月08日
    浏览(49)
  • element-plus的周选择器 一周从周一开始

    1、代码 1)、template中 2)、方法中  2、细节  (1)value-format=\\\"YYYY-MM-DD\\\"           这样写change事件中得到的值就是2020-12-10          想要年月日时分秒 就写成【value-format=\\\"YYYY-MM-DD hh:mm:ss\\\"】

    2024年02月10日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包