Vue中ElementUI结合transform使用时如何修复el-select弹框定位不准确问题

 更新时间:2024年01月16日 10:12:54   作者:觉醒法师  
这篇文章主要介绍了Vue中ElementUI结合transform使用时如何修复el-select弹框定位不准确问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

在大屏开发中,比如将1920*1080放到更大像素(3500*2400)大屏上演示,此时需要使用到transform来对页面进行缩放,但是此时发现弹框定位出错问题,无法准备定位到实际位置。之前写过一篇讲解的是ElementUI中的<el-date-picker />组件修复定位问题,经过网友不断发现和提问,原来不同组件解决方案是不同的,这讲解下 <el-select />组件如何修复。

<el-date-picker />组件地址:https://www.jb51.net/javascript/3130744g8.htm

接下来我们讲下select组件的popper弹框错位问题。

一、html代码

这里还是使用@focus事件也触发修复定位功能。

<el-select
	ref="elSelect"
	placeholder="商机状态"
	size="small"
	v-model="proStage"
	:popper-append-to-body="false"
	@focus="focusFixDateSelectPosition"
	>
	<el-option
		v-for="item in stageList"
		key="item.FieldValue"
		label="item.FieldLabel"
		value="item.FieldValue"
		>
	</el-option>
</el-select>

二、focus事件

因为select组件的focus事件返回的参数为FocusEvent ,则内部数据无法满足popper弹框的调整,如下图:

要获取和picker一样的数据,得使用$refs获取,代码如下:

/**
* 解决Select定位问题
*/
focusFixDateSelectPosition(){
	let e = this.$refs['elSelect'].$refs['popper'];
	console.log('e', e);
}

如下图,此时已拿到和picker一样的数据结果,可以通过popperJS和$el进行修复定准了:

三、回调函数

这里直接调用e.popperJS会出现undefined或null结果,所以添加定时器判断如果未获取对object对象,则回调函数直到获取e.popperJS对象为止,代码如下:

/**
 * 回调函数
 */
const selectCallback = e => {
  setTimeout(() => {
    if('undefined'===typeof e['popperJS'] || null == e['popperJS']){
      selectCallback(e);
    }else{
      e.popperJS.state.position = 'absolute';
      e.popperJS.update();
      setTimeout(() => {
         e.$el.style.top = 'inherit';
         e.$el.style.left = '0';
       }, 20);
    }
  }, 20);
}

然后将selectCallback回调函数添加到focusFixDateSelectPosition中,代码如下:

focusFixDateSelectPosition(eve){
    let e = this.$refs['elSelect'].$refs['popper'];
    selectCallback(e);
}

此时,下拉框错位问题则解决了,如下图:

到此这篇关于Vue中ElementUI结合transform使用时,修复el-select弹框定位不准确问题的文章就介绍到这了,更多相关Vue ElementUI 修复el-select弹框定位不准确内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Vue3中安全访问子组件的示例代码

    在Vue3中安全访问子组件的示例代码

    在 Vue 开发中,父子组件间的通信是高频场景,当需要在父组件中直接调用子组件的方法时,模板引用(Template Refs)是最直接的解决方案,本文将通过一段 Vue 3 代码片段,深入剖析如何通过 TypeScript 实现类型安全的子组件实例访问,需要的朋友可以参考下
    2025-03-03
  • 在vue中使用echarts图表实例代码详解

    在vue中使用echarts图表实例代码详解

    本文通过实例代码给大家介绍了在vue中使用echarts图表的方法,需要注意的事项文中给大家提到,需要的朋友可以参考下
    2018-10-10
  • vue单选按钮,选中如何改变其当前按钮颜色

    vue单选按钮,选中如何改变其当前按钮颜色

    这篇文章主要介绍了vue单选按钮,选中如何改变其当前按钮颜色。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • vue修改vue项目运行端口号的方法

    vue修改vue项目运行端口号的方法

    本篇文章主要介绍了vue修改vue项目运行端口号的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • vue(element ui)使用websocket及心跳检测方式

    vue(element ui)使用websocket及心跳检测方式

    这篇文章主要介绍了vue(element ui)使用websocket及心跳检测方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 前端全屏显示解决方案分享(附图文详解)

    前端全屏显示解决方案分享(附图文详解)

    这篇文章主要介绍了前端实现全屏显示的三种解决方案,并针对每种方案的适用场景和优缺点进行了详细分析,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • SpringBoot+Vue3实现文件的上传和下载功能

    SpringBoot+Vue3实现文件的上传和下载功能

    上传文件和下载文件是我们平时经常用到的功能,接下来就让我们用SpringBoot,Vue3和ElementPlus组件实现文件的上传和下载功能吧,感兴趣的朋友跟随小编一起看看吧
    2023-01-01
  • vue3 内容过多出现滚动条时滚动条自动定位到末端的操作代码

    vue3 内容过多出现滚动条时滚动条自动定位到末端的操作代码

    这篇文章主要介绍了vue3 内容过多出现滚动条时滚动条自动定位到末端的操作代码,本文给大家介绍的非常详细,需要的朋友参考下吧
    2024-05-05
  • vue项目中如何配置env环境的实现

    vue项目中如何配置env环境的实现

    本文主要介绍了vue项目中如何配置env环境的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 如何实现vue加载指令 v-loading

    如何实现vue加载指令 v-loading

    在日常的开发中,加载效果是非常常见的,但是怎么才能方便的使用,本文介绍如何实现vue加载指令 v-loading,感兴趣的朋友一起看看吧
    2024-01-01

最新评论