解决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入门教程(11) js事件处理
Jan 31 Javascript
浏览器解析js生成的html出现样式问题的解决方法
Apr 16 Javascript
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
Aug 13 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
Dec 01 Javascript
JS Array创建及concat()split()slice()的使用方法
Jun 03 Javascript
基于JavaScript实现自定义滚动条
Jan 25 Javascript
详谈$.data()的用法和作用
Feb 13 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
Feb 21 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
Dec 20 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
Oct 30 Javascript
vue中的循环对象属性和属性值用法
Sep 04 Javascript
Openlayers学习之地图比例尺控件
Sep 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
一个程序下载的管理程序(三)
2006/10/09 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
JavaScript事件列表解说
2006/12/22 Javascript
关于this和self的使用说明
2010/08/01 Javascript
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
全面了解Python环境配置及项目建立
2016/06/30 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python如何实现代码检查
2019/06/28 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
大学在校生求职信范文
2013/11/21 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
为Java项目添加Redis缓存的方法
2021/05/18 Redis
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server