解决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单行文字向上滚动效果示例
Mar 06 Javascript
IE8中动态创建script标签onload无效的解决方法
Dec 22 Javascript
JavaScript事件委托用法分析
Jan 24 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
微信小程序中单位rpx和rem的使用
Dec 06 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
Feb 19 Javascript
javascript数据结构之串的概念与用法分析
Apr 12 Javascript
关于vue.js组件数据流的问题
Jul 26 Javascript
JavaScript实现动态添加Form表单元素的方法示例
Aug 14 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
May 13 Javascript
关于JS解构的5种有趣用法
Sep 05 Javascript
微信小程序接入vant Weapp组件的详细步骤
Oct 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
thinkphp特殊标签用法概述
2014/11/24 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
js module大战
2019/04/19 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
简单了解django文件下载方式
2020/02/10 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
python实现自动打卡的示例代码
2020/10/10 Python
详解Python中的文件操作
2021/01/14 Python
房地产出纳岗位职责
2013/12/01 职场文书
简历上的自我评价
2014/02/03 职场文书
项目建议书格式
2014/03/12 职场文书
党员创先争优承诺书
2014/03/26 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
小学英语复习计划
2015/01/19 职场文书
经理岗位职责
2015/02/02 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
产品质量保证书范本
2015/02/27 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
一篇文章弄懂Python中的内建函数
2021/08/07 Python