解决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 相关文章推荐
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 Javascript
固定表格行列(expression)在IE下适用
Jul 25 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
Dec 27 Javascript
浅谈javascript中createElement事件
Dec 05 Javascript
原生js结合html5制作小飞龙的简易跳球
Mar 30 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
Apr 25 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
Oct 14 Javascript
JavaScript实现快速排序的方法分析
Jan 10 Javascript
vue实现简单的MVVM框架
Aug 05 Javascript
layui table去掉右侧滑动条的实现方法
Sep 05 Javascript
Jquery高级应用Deferred对象原理及使用实例
May 28 jQuery
Vant 中的Toast设置全局的延迟时间操作
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
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
php下过滤HTML代码的函数
2007/12/10 PHP
PHP 写文本日志实现代码
2010/05/18 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
vue-cli之router基本使用方法详解
2017/10/17 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Python类反射机制使用实例解析
2019/12/30 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
Linux机考试题
2015/10/16 面试题
应届专科生个人的自我评价
2014/01/05 职场文书
给同事的道歉信
2014/01/11 职场文书
2015年行政部工作总结
2015/04/28 职场文书
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS
关于Redis的主从复制及哨兵问题
2022/06/16 Redis