解决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 相关文章推荐
通过Unicode转义序列来加密,按你说的可以算是混淆吧
May 06 Javascript
JS 跳转页面延迟2种方法
Mar 29 Javascript
Js base64 加密解密介绍
Oct 11 Javascript
浅谈vue-router 路由传参的方法
Dec 27 Javascript
JS中touchstart事件与click事件冲突的解决方法
Mar 12 Javascript
setTimeout时间设置为0详细解析
Mar 13 Javascript
微信小程序实现列表页的点赞和取消点赞功能
Nov 02 Javascript
JavaScript设计模式之装饰者模式实例详解
Jan 17 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
Aug 23 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
Nov 01 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
Javascript的promise,async和await的区别详解
Mar 24 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
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
jQuery模拟窗口抖动效果
2017/03/15 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
Python selenium 三种等待方式解读
2016/09/15 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
Python探索之创建二叉树
2017/10/25 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
WxPython建立批量录入框窗口
2019/02/27 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
python实现一个猜拳游戏
2020/04/05 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
浅析Python 多行匹配模式
2020/07/24 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
a标签下载链接的简单实现
2016/09/13 HTML / CSS
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
任命书范本大全
2014/06/06 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
交通处罚决定书
2015/06/24 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书