解决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 相关文章推荐
Javascript图像处理—亮度对比度应用案例
Jan 03 Javascript
js Date概念详细介绍
Nov 22 Javascript
js获取电脑分辨率的思路及操作
Nov 22 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
Apr 29 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
Sep 24 Javascript
Bootstrap CSS布局之代码
Dec 17 Javascript
Angular的MVC和作用域
Dec 26 Javascript
Bootstrap中data-target 到底是什么
Feb 14 Javascript
详解vue中this.$emit()的返回值是什么
Apr 07 Javascript
JS字符串常用操作方法实例小结
Jun 24 Javascript
js实现坦克移动小游戏
Oct 28 Javascript
vant picker+popup 自定义三级联动案例
Nov 04 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简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
php 可变函数使用小结
2018/06/12 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
javascript GUID生成器实现代码
2009/10/31 Javascript
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
python numpy 反转 reverse示例
2019/12/04 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
荷兰手表网站:Watch2Day
2018/07/02 全球购物
优秀本科生求职推荐信
2014/02/24 职场文书
体育活动总结范文
2014/05/04 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
办理收楼委托书范本
2014/10/09 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
房租涨价通知
2015/04/23 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
雷锋电影观后感
2015/06/10 职场文书
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
Python中的tkinter库简单案例详解
2022/01/22 Python
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript
正则表达式基础与常用验证表达式
2022/06/16 Javascript