解决layui弹出层layer的area过大被遮挡的问题

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过大被遮挡的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容