解决layer弹出层自适应页面大小的问题


Posted in Javascript onSeptember 16, 2019

前两天在Vue中引入了Vue-layer插件,实现了弹出层效果。不过由于是在22寸屏下开发的,没多想,弹出层的area的长宽就设定的都是800px,效果还很好。结果那给用户看,他们是12寸的笔记本。弹出层直接撑爆了页面,无法关闭。。。

网上的解决方案大都是以下几种:

1、改成百分比形式。有bug,下面细说。

2、改成em,rem等。同上

3、采用area:auto。可能是因为采用了swiper的原因吧,这样设置会导致弹出层出现“顶天立地”的效果

4、采用iframeAuto。这个没太搞懂怎么用,而且网上查的资料,很多人都反映不能用。

5、根据当前页面高度计算好以后,再填入高度。这应该是最优解,但是有点麻烦。

尝试了很多办法,都无法实现想要的效果,最后没办法,只能去研究为什么百分比和rem这种形式会有bug。

这个bug的效果是,虽然弹出窗按比例展示了,但是里面包含的一个div的由于高度很小,导致看不到任何内容。查看网页代码,很容易就找到出问题的所在,这个div的height只有50px,不知道怎么会这样。

估摸着应该是js文件计算高度是出错了。这个div的id是vlip1545899541487,猜测应该是一个固定前缀加了随机数。只查找vlip,在vue-layer.js中果然找到了相应的代码

id:"vlip"+(new Date).getTime()

id是vlip加时间戳生成的,然后再往后看,就会发现问题所在

{return{height:parseInt(this.options.area[1])-50+"px",minHeight:"inherit",overflow:"auto"}}}

直接去area的第二个参数转成int值减去50再加上后缀“px”,所以假如我们配了80%的高度,最终的height只有30px。。。

所以只要把这里的生成代码略加改动就好。

{return{height:this.options.area[1].indexOf("%")>=0?"90%":parseInt(this.options.area[1])-50+"px",minHeight:"inherit",overflow:"auto"}}}

增加三目运算符,判断如果包含%的话,就写死一个值90%。其实这样不算完美,因为不同尺寸的显示屏,90%所展示的效果都不太一样。但是这样比较省事。

以上这篇解决layer弹出层自适应页面大小的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 表格分页等操作实现代码(pagedown,pageup)
Apr 11 Javascript
Jquery焦点与失去焦点示例应用
Jun 10 Javascript
JavaScript实现动态创建CSS样式规则方案
Sep 06 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
Jan 08 Javascript
JS搜狐面试题分析
Dec 16 Javascript
Textarea输入字数限制实例(兼容iOS&安卓)
Jul 06 Javascript
jQuery选择器之属性筛选选择器用法详解
Sep 19 jQuery
基于javascript 显式转换与隐式转换(详解)
Dec 15 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
Oct 12 Javascript
js中值引用和地址引用实例分析
Jun 21 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
Jul 19 Javascript
详解javascript void(0)
Jul 13 Javascript
手把手15分钟搭一个企业级脚手架
Sep 16 #Javascript
layer弹出层自适应高度,垂直水平居中的实现
Sep 16 #Javascript
JS多个异步请求 按顺序执行next实现解析
Sep 16 #Javascript
基于layui框架响应式布局的一些使用详解
Sep 16 #Javascript
Layui点击图片弹框预览的实现方法
Sep 16 #Javascript
layuiAdmin循环遍历展示商品图片列表的方法
Sep 16 #Javascript
layui异步加载table表中某一列数据的例子
Sep 16 #Javascript
You might like
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
PHP云打印类完整示例
2016/10/15 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
一些Python中的二维数组的操作方法
2015/05/02 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
Python测试人员需要掌握的知识
2018/02/08 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
旷课检讨书2000字
2014/01/14 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
文明班集体申报材料
2014/05/23 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
企业年检委托书范本
2014/10/14 职场文书
酒会邀请函
2015/01/31 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
2015年小学开学寄语
2015/02/27 职场文书
整改通知书格式
2015/04/22 职场文书
教师创先争优承诺书
2015/04/27 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
小程序实现侧滑删除功能
2022/06/25 Javascript