解决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 28 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
Mar 20 Javascript
JQuery表格内容过滤的实现方法
Jul 05 Javascript
jquery $.each() 使用小探
Aug 23 Javascript
JavaScript对IE操作的经典代码(推荐)
Mar 10 Javascript
javascript模拟post提交隐藏地址栏的参数
Sep 03 Javascript
jQuery随机密码生成的方法
Mar 09 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
Oct 19 Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 Javascript
vue awesome swiper异步加载数据出现的bug问题
Jul 03 Javascript
微信小程序 确认框的实现(附代码)
Jul 23 Javascript
node.js使用yargs处理命令行参数操作示例
Feb 11 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
php数组转成json格式的方法
2015/03/09 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
在MAC上搭建python数据分析开发环境
2016/01/26 Python
Python解惑之整数比较详解
2017/04/24 Python
Python 类的特殊成员解析
2018/06/20 Python
python os.path模块常用方法实例详解
2018/09/16 Python
python将list转为matrix的方法
2018/12/12 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
连锁经营管理专业大学生求职信
2013/10/30 职场文书
大学生村官心得体会范文
2014/01/04 职场文书
司马光教学反思
2014/02/01 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
小学生元旦感言
2014/02/26 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
文体活动总结
2015/02/04 职场文书
三好学生个人总结
2015/02/15 职场文书
教学质量月活动总结
2015/05/11 职场文书
python3操作redis实现List列表实例
2021/08/04 Python