解决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中null与undefined分析
Jul 25 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
浅谈javascript中replace()方法
Nov 10 Javascript
Sea.JS知识总结
May 05 Javascript
jQuery实现页面点击后退弹出提示框的方法
Aug 24 Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 Javascript
JavaScript之json_动力节点Java学院整理
Jun 29 Javascript
vue.js实现备忘录功能的方法
Jul 10 Javascript
Node.js readline模块与util模块的使用
Mar 01 Javascript
vue中轮训器的使用
Jan 27 Javascript
js使用cookie实现记住用户名功能示例
Jun 13 Javascript
openlayers实现图标拖动获取坐标
Sep 25 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
main.php
2006/12/09 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
php输入流php://input使用浅析
2014/09/02 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
asp.net和php的区别点总结
2019/10/10 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
Python迭代器和生成器介绍
2015/03/06 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
《乡愁》教学反思
2014/02/18 职场文书
演讲稿的写法
2014/05/19 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
Javascript之datagrid查询详解
2021/09/15 Javascript