解决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 相关文章推荐
js同时按下两个方向键
Dec 01 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
Nov 06 Javascript
在jQuery中处理XML数据的大致方法
Aug 14 Javascript
JS实现复制功能
Mar 01 Javascript
JS数组搜索之折半搜索实现方法分析
Mar 27 Javascript
JS实现简单的天数计算器完整实例
Apr 28 Javascript
vue解决跨域路由冲突问题思路解析
Nov 03 Javascript
three.js中3D视野的缩放实现代码
Nov 16 Javascript
js实现鼠标单击Tab表单切换效果
May 16 Javascript
JavaScript实现学生在线做题计时器功能
Dec 05 Javascript
Angular封装搜索框组件操作示例
Apr 25 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
Sep 05 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 session有效期问题
2009/04/26 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
深入浅出php socket编程
2015/05/13 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python的else子句使用指南
2016/02/27 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python:动态路由的Flask程序代码
2019/11/22 Python
在keras中实现查看其训练loss值
2020/06/16 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
旧时光糖果:Old Time Candy
2018/02/05 全球购物
C语言编程题
2015/03/09 面试题
高中自我评价分享
2013/12/05 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
应聘教师求职信
2014/07/19 职场文书
2014年督导工作总结
2014/11/19 职场文书
外出考察学习心得体会
2016/01/18 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书