解决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之七 判断点击了鼠标哪个键的代码
Jun 21 Javascript
js中iframe调用父页面的方法
Oct 30 Javascript
基于JQuery实现图片轮播效果(焦点图)
Feb 02 Javascript
JS全局变量和局部变量最新解析
Jun 24 Javascript
微信小程序 action-sheet底部菜单详解
Oct 27 Javascript
通过扫描二维码打开app的实现代码
Nov 10 Javascript
js实现类bootstrap模态框动画
Feb 07 Javascript
轻松学习Javascript闭包
Mar 01 Javascript
微信小程序 MD5的方法详解及实例代码
Mar 10 Javascript
vue组件中使用iframe元素的示例代码
Dec 13 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
Mar 09 Javascript
vue开发移动端底部导航条功能
Apr 08 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环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
JavaScript对象原型链原理详解
2020/02/05 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
Python 列表list使用介绍
2014/11/30 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
企业给企业的表扬信
2014/01/13 职场文书
环境工程专业自荐信范文
2014/03/18 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
医生辞职信范文
2015/03/02 职场文书
人与自然观后感
2015/06/16 职场文书
消防宣传标语大全
2015/08/03 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
OpenCV 图像梯度的实现方法
2021/07/25 Python