解决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刷新框架子页面的七种方法代码
Nov 20 Javascript
javascript XMLHttpRequest对象全面剖析
Apr 24 Javascript
js调用图片隐藏&amp;显示实现代码
Sep 13 Javascript
JS记录用户登录次数实现代码
Jan 15 Javascript
express的中间件cookieParser详解
Dec 04 Javascript
js实现楼层效果的简单实例
Jul 15 Javascript
jQuery根据ID、CLASS、等获取对象的实例
Dec 04 Javascript
微信小程序 实战程序简易新闻的制作
Jan 09 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
Jul 10 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
Dec 27 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
Aug 28 Javascript
微信小程序实现页面左右滑动
Nov 16 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
动易数据转成dedecms的php程序
2007/04/07 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
python格式化字符串实例总结
2014/09/28 Python
Python3实现Web网页图片下载
2016/01/28 Python
Django Highcharts制作图表
2016/08/27 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
中专生自我鉴定
2013/12/17 职场文书
小学生期末自我鉴定
2014/01/19 职场文书
《画风》教学反思
2014/04/16 职场文书
世界读书日的活动方案
2014/08/20 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
保密工作承诺书
2014/08/29 职场文书
党支部三会一课计划
2014/09/24 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL