当前位置: 首页 > news >正文

Vue中ElementUI结合transform使用时,发现弹框定位不准确问题

        在近期开发中,需要将1920*1080放到更大像素大屏上演示,所以需要使用到transform来对页面进行缩放,但是此时发现弹框定位出错问题,无法准备定位到实际位置。

        查看element-ui官方文档无果后,打算更换新的框架进行开发,但更换几个后发现都存在类似问题,由于之前项目都是使用element-ui,对此框架比较熟悉,所以还是决定在此基础上解决问题。

        在未解决前,错位效果如下:

        如果屏幕像素更大,则偏移位置更远,对此element-ui文档中常规配置已无法解决,只能从底层考虑。

一、思路

        首先,我们得在触发日期弹框显示前或当时,动态修改定位相关参数,在官方文档上发现有focus事件,在触发此事件时,弹框开始显示,所以在此修改相应参数即可。

        其次,绑定focus事件函数,返回当前日期组件的ref对象数据,可以通过popperJS对象修改弹框的定位属性,并使用update()函数重新更新即可。

        然后,在更新完成后,需要添加setTimeout计时器,延迟修改弹框的top属性。由于暂时未从底层了解到从哪修改top值,放在update()之前修改发现无效,由于内部会重新计算覆盖;只能在update()之后修改,出此下策也能得到同样效果。

二、代码

1、组件代码

<el-date-pickerv-model="dateValue"size="small"type="date":append-to-body="false":clearable="false"placeholder="选择日期" @focus="focusFixDatePickerPosition"></el-date-picker>

2、输出focus事件返回参数

methods: {focusFixDatePickerPosition(e){console.log(e);}
}

输出结果如下:

3、经测试,发现同update()函数一样效果的函数还有很多,如下:

// popperJS.state中updateBound()调用也会重新更新弹框位置
e.popperJS.state.updateBound();// 直接调用popperJS中的update()
e.popperJS.update();// 使用showPicker()也有同样效果
e.showPicker();// 使用updatePopper(),也会更新弹框位置
e.updatePopper();

        在实际开发中,根据需要使用其中一个即可。每个函数本人也没作研究,只是测试发现可实现同样效果,喜欢钻牛角尖的同学可以研究下。

4、在methods中定义focusFixDatePickerPosition函数

methods: {focusFixDatePickerPosition(e){this.$nextTick(() => {// 修改定位属性,将fixed改成absolutee.popperJS.state.position = 'absolute';// 调用update()后,弹框位置重新调休e.popperJS.update();// 添加计时器setTimeout(() => {// 输入框高度为弹框 顶部偏移量,获取后赋值给top即可e.picker.$el.style.top = e.$el.clientHeight + "px";}, 20);});}
}

此时,则完成了弹框位置的修正,效果如下:

http://www.lryc.cn/news/141856.html

相关文章:

  • (一)连续随机量的生成-基于分布函数
  • 【springboot】Spring Cache缓存:
  • 数学建模-建模算法(4)
  • python之函数返回数据框
  • 电子商务安全体系架构技术方面
  • 新安装IDEA 常用插件、设置
  • ChromeOS 的 Linux 操作系统和 Chrome 浏览器分离
  • 哔哩哔哩 B站 bilibili 视频倍速设置 视频倍速可自定义
  • Lazada商品详情接口 获取Lazada商品详情数据 Lazada商品价格接
  • 路由攻击(ospf attack)及C/C++代码实现
  • nginx配置站点强制开启https
  • Jacoco XML 解析
  • 【面试题】JDK(工具包)、JRE(运行环境和基础库)、JVM(java虚拟机)之间的关系?
  • 软件设计师学习笔记7-输入输出技术+总线+可靠性+性能指标
  • Windows下MATLAB调用Python函数操作说明
  • 【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常
  • JavaScript Es6_3笔记
  • Qt产生随机数
  • postgresql常用函数-数学函数
  • 【排序】快速排序(前后指针法)—— 考的最少的一种算法
  • 软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解
  • openCV实战-系列教程2:阈值与平滑处理(图像阈值/图像平滑处理/高斯/中值滤波)、源码解读
  • C语言第五章-循环结构练习
  • Echarts面积图2.0(范围绘制)
  • flink checkpoint时exact-one模式和atleastone模式的区别
  • QEMU 仿真RISC-V freeRTOS 程序
  • 用大白话来讲讲多线程的知识架构
  • 【uniapp】微信小程序 , 海报轮播图弹窗,点击海报保存到本地,长按海报图片分享,收藏或保存
  • SpringBoot与前端交互遇到的一些问题
  • Maven介绍与配置+IDEA集成Maven+使用Maven命令