解决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 缩图函数 (onDOMLoaded)……
Oct 23 Javascript
jQuery实用基础超详细介绍
Apr 11 Javascript
JavaScript的设计模式经典之建造者模式
Feb 24 Javascript
JS JSOP跨域请求实例详解
Jul 04 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
Jul 22 Javascript
JS实现的找零张数最小问题示例
Nov 28 Javascript
详解如何在Vue里建立长按指令
Aug 20 Javascript
JS中的防抖与节流及作用详解
Apr 01 Javascript
实现elementUI表单的全局验证的方法步骤
Apr 29 Javascript
javascript使用substring实现的展开与收缩文字功能示例
Jun 17 Javascript
vue下canvas裁剪图片实例讲解
Apr 16 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
Jun 04 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版(2)
2006/10/09 PHP
php session应用实例 登录验证
2009/03/16 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
Python实现端口检测的方法
2018/07/24 Python
python3爬虫怎样构建请求header
2018/12/23 Python
python调用c++传递数组的实例
2019/02/13 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
财务管理职业生涯规划书
2014/02/26 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
严以律己学习心得体会
2016/01/13 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
Mysql MVCC机制原理详解
2021/04/20 MySQL
完美解决golang go get私有仓库的问题
2021/05/05 Golang
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL