解决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获取文本节点之 text()/val()/html() 方法区别
Mar 01 Javascript
js取整数、取余数的方法
May 11 Javascript
jquery中live()方法和bind()方法区别分析
Jun 23 Javascript
老生常谈js动态添加事件--- 事件委托
Jul 19 Javascript
JS实现复制内容到剪贴板功能
Feb 05 Javascript
三种方式实现瀑布流布局
Feb 10 Javascript
angularjs实现过滤并替换关键字小功能
Sep 19 Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 Javascript
9102了,你还不会移动端真机调试吗
Mar 25 Javascript
实用Javascript调试技巧分享(小结)
Jun 18 Javascript
微信小程序全局变量改变监听的实现方法
Jul 15 Javascript
vue使用codemirror的两种用法
Aug 27 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操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
react-router中的属性详解
2017/06/01 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
python判断windows系统是32位还是64位的方法
2015/05/11 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
中国高端家电购物商城:顺电
2018/03/04 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
护理职业生涯规划书
2014/01/24 职场文书
施工安全员岗位职责
2015/04/11 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
python中的被动信息搜集
2021/04/29 Python
带你学习MySQL执行计划
2021/05/31 MySQL