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

这篇具有很好参考价值的文章主要介绍了Vue中ElementUI结合transform使用时,发现弹框定位不准确问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

Vue中ElementUI结合transform使用时,发现弹框定位不准确问题,Vue.js,vue.js,elementui,前端

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

一、思路

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

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

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

二、代码

1、组件代码

<el-date-picker
	  v-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);
  }
}

输出结果如下:

Vue中ElementUI结合transform使用时,发现弹框定位不准确问题,Vue.js,vue.js,elementui,前端

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改成absolute
	  e.popperJS.state.position = 'absolute';
	  // 调用update()后,弹框位置重新调休
	  e.popperJS.update();
      // 添加计时器
	  setTimeout(() => {
		// 输入框高度为弹框 顶部偏移量,获取后赋值给top即可
		e.picker.$el.style.top = e.$el.clientHeight + "px";
	  }, 20);
	});
  }
}

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

Vue中ElementUI结合transform使用时,发现弹框定位不准确问题,Vue.js,vue.js,elementui,前端文章来源地址https://www.toymoban.com/news/detail-675889.html

到了这里,关于Vue中ElementUI结合transform使用时,发现弹框定位不准确问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue+ElementUI技巧分享:结合Sortablejs实现表格行拖拽

    在很多动态网页应用中,用户界面的交互性是提高用户体验的关键。在 Vue.js 中,结合 Element UI 和 sortablejs ,我们可以轻松实现表格的行拖拽功能。本文将演示如何在 Vue 项目中使用这些工具,并在拖拽后将数据更新到后端服务系统。 确保你的项目中已经安装了 Element UI 和

    2024年02月04日
    浏览(49)
  • Vue结合ElementUi修改<el-table>表格的背景颜色和表头样式

    修改table的表头背景 和 字体颜色: 以下是修改el-table表格内容的背景色和边框样式:

    2024年02月11日
    浏览(44)
  • midjourney ai与ChatGPT结合使用,大大提升返回结果准确率

    最近在试用midjourney ai绘图,结合ChatGPT给到更多的特征来说明 如果只是单纯的提问,可能返回杂乱的图片. 提问时要把相关特征,风格,物件都要说清楚,ai才能识别得到,放几张体验照: 生成结束后将会出现两排按钮。 U是upscale的缩写,含义为放大像素提升细节,U1, U2, U3,

    2023年04月19日
    浏览(27)
  • ElementUI浅尝辄止25:MessageBox 弹框

    模拟系统的消息提示框而实现的一套模态对话框组件,用于消息提示、确认消息和提交内容。 从场景上说,MessageBox 的作用是美化系统自带的  alert 、 confirm  和  prompt ,因此适合展示较为简单的内容。如果需要弹出较为复杂的内容,还是要使用 Dialog。 当用户进行操作时会

    2024年02月10日
    浏览(27)
  • css,less,scss中的深度选择器,结合elementUi使用

    css中深度选择器用到的是 加类名 可以很方便的找到自己想要修改的样式  lees中用到 /deep/ 加类名   scss中用到::v-deep 加类名    

    2024年02月13日
    浏览(34)
  • uniapp 添加定位权限及弹出权限弹框

    背景: Android 10 获取当前连接wifi 的名称,老是返回 unkonw null ,原因是没有获取到定位权限,打开定位权限后就可以获取。 Android 10 以后,获取定位权限需要在 manifest.json 中添加如下: 添加上如上权限之后,查看应用的权限,定位显示询问,还是没有获取到定位权限。 弹出

    2024年02月11日
    浏览(24)
  • 准确率 99.9% 的离线IP地址定位库

    Ip2region 是一个离线 IP 地址定位库,准确率高达 99.9%,搜索性能为 0.0x 毫秒。DB 文件只有几兆字节,其中存储了所有 IP 地址。 支持 Java、PHP、C、Python、Nodejs、Golang、C#、lua 等查询绑定。查询算法使用二叉树、B树和内存搜索算法。 查询准确率高达99.9% 数据来源于一些知名的

    2024年02月12日
    浏览(29)
  • vue使用ElementUI

    npm i element-ui -S   说明:为了输入时候有提示,建议安装vue-helper npm install babel-plugin-component -D   2.2.1创建babel.config.js 2.2.2 main.js 说明:弹出框的实现。        

    2024年02月13日
    浏览(21)
  • 微软推出 Hierarchical Transformer 实现更高准确率的语音评测

    对于语言学习者来说,练习发音并获得及时准确的反馈,是提高口语水平的重要环节。多年来,微软一直深耕基于 Azure 认知服务的语音功能,不断优化语音评测[1]功能的底层技术,从准确率、流畅度、完整性和语音语调等方面,提供更实用的反馈,赋能教育行业,提升教与学

    2024年02月13日
    浏览(33)
  • 【已解决】Vue3使用Element-plus按需加载时消息弹框ElMessage没有样式

    Element-plus在使用ElMessage消息弹框的时候没有样式,按照官方的按需加载的方式引入的 1、Element-plus使用了自动按需导入,vite.config.js配置如下: 代码手动导入了API,如下 解决没有样式的问题 将上述代码导入import部分的代码去掉,直接调用。 使用的时候直接调用 成功解决!

    2024年02月10日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包