解决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 相关文章推荐
event.keyCode键码值表 附只能输入特定的字符串代码
May 15 Javascript
基于Jquery制作的幻灯片图集效果打包下载
Feb 12 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
Jun 14 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
Dec 17 Javascript
jQuery的text()方法用法分析
Dec 20 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
Feb 28 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
Aug 18 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
Sep 10 Javascript
详解使用webpack打包编写一个vue-toast插件
Nov 08 Javascript
Angular项目如何升级至Angular6步骤全纪录
Sep 03 Javascript
vue项目使用微信公众号支付总结及遇到的坑
Oct 23 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
Aug 28 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 include加载文件两种方式效率比较
2010/08/08 PHP
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
python脚本设置系统时间的两种方法
2016/02/21 Python
python运行其他程序的实现方法
2017/07/14 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
基于Django统计博客文章阅读量
2019/10/29 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
会计专业自荐信范文
2013/12/02 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
英文自荐信范文
2015/03/25 职场文书