解決layui彈出層layer的area過大被遮擋的問題
layer彈出窗口在彈出時指定了area,彈出后,如果當前頁面(iframe)大小比彈出的窗口小,那么就會出現(xiàn)無法操作彈出窗口的尷尬情況。
如圖:

彈出窗口比當前頁面大,這時,唯有放大整個頁面才能看到完全的彈出窗口,才可以操作。
layui 為我們提供了 layer.style(); 方法來重新跳整窗口的大小 , 然后我們只需要寫一個函數(shù),得到當前document的寬度和高度, 判斷彈出框是否大于document來調(diào)整窗口大小
<!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) {
//按鈕【按鈕一】的回調(diào)
}
, btn2: function (index, layero) {
//按鈕【按鈕二】的回調(diào)
//return false 開啟該代碼可禁止點擊該按鈕關(guān)閉
}
, btn3: function (index, layero) {
//按鈕【按鈕三】的回調(diào)
//return false 開啟該代碼可禁止點擊該按鈕關(guān)閉
}
, cancel: function () {
//右上角關(guān)閉回調(diào)
//return false 開啟該代碼可禁止點擊該按鈕關(guān)閉
},
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過大被遮擋的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Ajax+FormData+javascript實現(xiàn)無刷新表單信息提交
在前端開發(fā)中ajax,formdata和js實現(xiàn)無刷新表單信息提交非常棒,接下來通過本文給大家介紹Ajax+FormData+javascript實現(xiàn)無刷新表單信息提交的相關(guān)資料,需要的朋友可以參考下2016-10-10
詳解將微信小程序接口Promise化并使用async函數(shù)
這篇文章主要介紹了詳解將微信小程序接口Promise化并使用async函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08
bootstrap實現(xiàn)點擊刪除按鈕彈出確認框的實例代碼
本文通過實例代碼給大家介紹了bootstrap實現(xiàn)點擊刪除按鈕彈出確認框的方法,需要的朋友參考下吧2018-08-08
JS格式化數(shù)字(每三位加逗號)的方法總結(jié)
這篇文章總結(jié)了JS格式化數(shù)字(每三位加逗號)的幾種方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
js實現(xiàn)權(quán)限樹的更新權(quán)限時的全選全消功能
上一篇發(fā)了添加權(quán)限時的權(quán)限樹JS源碼,下面把更新時的也發(fā)給大家借鑒一下,因為更新時候牽扯到判斷已有權(quán)限等,所以,還要麻煩一些。2009-02-02

