解决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 相关文章推荐
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
Oct 01 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
May 08 Javascript
GreyBox技术总结(转)
Nov 23 Javascript
JavaScript中switch语句的用法详解
Jun 03 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
Dec 13 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
Apr 22 Javascript
JavaScript实现滑动导航栏效果
Aug 30 Javascript
Js中async/await的执行顺序详解
Sep 22 Javascript
VScode格式化ESlint方法(最全最好用方法)
Sep 10 Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 Javascript
原生js实现表格循环滚动
Nov 24 Javascript
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
关于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后台微信支付和支付宝支付开发
2017/04/28 PHP
PHP时间类完整代码实例
2021/02/26 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
python保存数据到本地文件的方法
2018/06/23 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
Python打印不合法的文件名
2020/07/31 Python
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
财务管理个人自荐书范文
2013/11/24 职场文书
中学生运动会口号
2014/06/07 职场文书
医院节能减排方案
2014/06/13 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
雷锋观后感
2015/06/10 职场文书
环保建议书作文400字
2015/09/14 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python