解决layui弹出层layer的area过大被遮挡的问题


Posted in Javascript onSeptember 21, 2019

layer弹出窗口在弹出时指定了area,弹出后,如果当前页面(iframe)大小比弹出的窗口小,那么就会出现无法操作弹出窗口的尴尬情况。

如图:

解决layui弹出层layer的area过大被遮挡的问题

弹出窗口比当前页面大,这时,唯有放大整个页面才能看到完全的弹出窗口,才可以操作。

layui 为我们提供了 layer.style(); 方法来重新跳整窗口的大小 , 然后我们只需要写一个函数,得到当前document的宽度和高度, 判断弹出框是否大于document来调整窗口大小

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link rel="stylesheet" href="layui/css/layui.css" rel="external nofollow" media="all">
</head>
<body>
<button id="dianji">点击</button>

<form class="layui-form" action="" id="id">
 <div class="layui-form-item">
  <label class="layui-form-label">单行输入框</label>
  <div class="layui-input-block">
   <input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题"
     class="layui-input">
  </div>
 </div>
 <div class="layui-form-item">
  <label class="layui-form-label">验证必填项</label>
  <div class="layui-input-block">
   <input type="text" name="username" lay-verify="required" lay-reqtext="用户名是必填项,岂能为空?" placeholder="请输入"
     autocomplete="off" class="layui-input">
  </div>
 </div>

 <div class="layui-form-item">
  <div class="layui-inline">
   <label class="layui-form-label">验证手机</label>
   <div class="layui-input-inline">
    <input type="tel" name="phone" lay-verify="required|phone" autocomplete="off" class="layui-input">
   </div>
  </div>
  <div class="layui-inline">
   <label class="layui-form-label">验证邮箱</label>
   <div class="layui-input-inline">
    <input type="text" name="email" lay-verify="email" autocomplete="off" class="layui-input">
   </div>
  </div>
 </div>
</form>

<script src="layui/layui.all.js"></script>
<script type="text/javascript">
 var layerIndex;
 var layerInitWidth;
 var layerInitHeight;
 var $;
 layui.use(['form', 'jquery'], function () {
  var form = layui.form;
  $ = layui.jquery;
  $("#dianji").click(function () {
   layer.open({
    type: 1,
    area: ['500px', '900px'],
    content: $('#id'), //这里content是一个DOM,注意:最好该元素要存放在body最外层,否则可能被其它的相对元素所影响
    btn: ['按钮一', '按钮二', '按钮三']
    , yes: function (index, layero) {
     //按钮【按钮一】的回调
    }
    , btn2: function (index, layero) {
     //按钮【按钮二】的回调

     //return false 开启该代码可禁止点击该按钮关闭
    }
    , btn3: function (index, layero) {
     //按钮【按钮三】的回调

     //return false 开启该代码可禁止点击该按钮关闭
    }
    , cancel: function () {
     //右上角关闭回调

     //return false 开启该代码可禁止点击该按钮关闭
    },
    success: function (layero, index) {
     //获取当前弹出窗口的索引及初始大小
     layerIndex = index;
     layerInitWidth = $("#layui-layer" + layerIndex).width();
     layerInitHeight = $("#layui-layer" + layerIndex).height();
     resizeLayer(layerIndex, layerInitWidth, layerInitHeight);
     form.render();
    }
   });

  })

 });

 function resizeLayer(layerIndex, layerInitWidth, layerInitHeight) {
  var windowWidth = $(document).width();
  var windowHeight = $(document).height();
  var minWidth = layerInitWidth > windowWidth ? windowWidth : layerInitWidth;
  var minHeight = layerInitHeight > windowHeight ? windowHeight : layerInitHeight;
  console.log("win:", windowWidth, windowHeight);
  console.log("lay:", layerInitWidth, layerInitHeight);
  console.log("min:", minWidth, minHeight);
  layer.style(layerIndex, {
   top: 0,
   width: minWidth,
   height: minHeight
  });
 }
</script>
</body>
</html>

效果图:

解决layui弹出层layer的area过大被遮挡的问题

以上这篇解决layui弹出层layer的area过大被遮挡的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE中jscript/javascript的条件编译
Sep 07 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
JS调用页面表格导出excel示例代码
Mar 18 Javascript
Js保留小数点的4种效果实现代码分享
Apr 12 Javascript
jquery修改网页背景颜色通过css方法实现
Jun 06 Javascript
jQuery中:visible选择器用法实例
Dec 30 Javascript
js生成随机数方法和实例
Jan 17 Javascript
通过js动态创建标签,并设置属性方法
Feb 24 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
Apr 28 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
Mar 28 Javascript
jquery实现的放大镜效果示例
Feb 24 jQuery
Three.js实现雪糕地球的使用示例详解
Jul 07 Javascript
关于layui flow loading占位图的实现方法
Sep 21 #Javascript
layui switch 开关监听 弹出确定状态转换的例子
Sep 21 #Javascript
微信小程序实现3D轮播图效果(非swiper组件)
Sep 21 #Javascript
微信小程序自定义波浪组件使用方法详解
Sep 21 #Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
Sep 21 #Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
Sep 21 #Javascript
Vue登录主页动态背景短视频制作
Sep 21 #Javascript
You might like
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
PHP7 windows支持
2021/03/09 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python学习笔记之os模块使用总结
2014/11/03 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
Python探索之SocketServer详解
2017/10/28 Python
简单实现Python爬取网络图片
2018/04/01 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
python argparse传入布尔参数false不生效的解决
2020/04/20 Python
django教程如何自学
2020/07/31 Python
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
社区包粽子活动方案
2014/01/21 职场文书
yy生日主持词
2014/03/20 职场文书
关于工作经历的证明书
2014/10/11 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android