解决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的运行机制和设计理念分析
Apr 05 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
Dec 21 Javascript
jquery如何改变html标签的样式(两种实现方法)
Jan 16 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
Jan 25 Javascript
JavaScript代码复用模式详解
Nov 07 Javascript
JS实现文档加载完成后执行代码
Jul 09 Javascript
纯JS代码实现隔行变色鼠标移入高亮
Nov 23 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
Dec 28 Javascript
AngulaJS路由 ui-router 传参实例
Apr 28 Javascript
js微信分享实现代码
Oct 11 Javascript
详解Vue前端生产环境发布配置实战篇
May 07 Javascript
使用原生JS实现滚轮翻页效果的示例代码
May 31 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
重置版战役片段
2020/04/09 魔兽争霸
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
python pygame实现五子棋小游戏
2020/10/26 Python
Python list运算操作代码实例解析
2020/01/20 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
商得四方公司面试题(gid+)
2014/04/30 面试题
公司成本主管岗位责任制
2014/02/21 职场文书
护士毕业实习感言
2014/03/05 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
前台岗位职责
2015/02/13 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
总经理年会致辞
2015/07/29 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
教师远程培训心得体会
2016/01/09 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书