解决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 如果改变span标签的是否隐藏属性
Oct 06 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
jquery实现网页查找功能示例分享
Feb 12 Javascript
jquery禁用右键示例
Apr 28 Javascript
javascript 获取元素样式必杀技
May 04 Javascript
angularjs实现与服务器交互分享
Jun 24 Javascript
javascript学习笔记(六)数据类型和JSON格式
Oct 08 Javascript
JavaScript中的闭包(Closure)详细介绍
Dec 30 Javascript
Node.js事件驱动
Jun 18 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
Jun 06 Javascript
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
微信小程序实现录音时的麦克风动画效果实例
May 18 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强制用户转向www域名的方法
2015/06/19 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
Python中请不要再用re.compile了
2019/06/30 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
介绍一下#error预处理
2015/09/25 面试题
经典婚礼主持开场白
2014/03/13 职场文书
财务担保书范文
2014/04/02 职场文书
爱心活动计划书
2014/04/26 职场文书
初一新生军训方案
2014/05/22 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android