解决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 相关文章推荐
jQuery EasyUI API 中文文档 搜索框
Sep 29 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
Jun 15 Javascript
15个常用的jquery代码片段
Dec 19 Javascript
jquery淡入淡出效果简单实例
Jan 14 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
使用plupload自定义参数实现多文件上传
Jul 19 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
Aug 18 Javascript
JavaScript实现自定义媒体播放器方法介绍
Jan 03 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
Aug 23 Javascript
AngularJS自定义过滤器用法经典实例总结
May 17 Javascript
vue+elementUi图片上传组件使用详解
Aug 20 Javascript
详解Vue数据驱动原理
Nov 17 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
PHP文件上传原理简单分析
2011/05/29 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
jquery密码强度校验
2015/12/02 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
Python脚本实现集群检测和管理功能
2015/03/06 Python
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
Python进阶之尾递归的用法实例
2018/01/31 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
Python tkinter实现日期选择器
2021/02/22 Python
安全生产知识竞赛活动总结
2014/07/07 职场文书
民主评议党员工作总结
2014/10/20 职场文书
不同意离婚代理词
2015/05/23 职场文书
师范生教育见习总结
2015/06/23 职场文书