layui彈出層layer的area過大被遮擋

来源:https://www.cnblogs.com/yysbolg/archive/2019/08/18/11371438.html
-Advertisement-
Play Games

layer彈出視窗在彈出時指定了area,彈出後,如果當前頁面(iframe)大小比彈出的視窗小,那麼就會出現無法操作彈出視窗的尷尬情況。如圖: 彈出視窗比當前頁面大,這時,唯有放大整個頁面才能看到完全的彈出視窗,才可以操作。 layui 為我們提供了 layer.style(); 方法來重新跳整窗 ...


 layer彈出視窗在彈出時指定了area,彈出後,如果當前頁面(iframe)大小比彈出的視窗小,那麼就會出現無法操作彈出視窗的尷尬情況。如圖:

 

彈出視窗比當前頁面大,這時,唯有放大整個頁面才能看到完全的彈出視窗,才可以操作。

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" 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>

 

效果圖:

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • module.exports Node應用由模塊組成,採用CommonJS模塊規範。根據這個規範,每個文件就是一個模塊,有自己的作用域。在這些文件裡面定義的變數、函數、類,都是私有的,對外不可見,因此規避掉了作用域污染。 根據CommonJS規定,每個模塊內部,module變數代表當前模塊,這個變數 ...
  • 一、查找字元串的位置(找到返回字元串首字母的位置,找不到返回-1): indexOf("string"):查找字元串string在字元串中首次出現的位置; indexOf("string",number):從number位置開始往後查找字元串string在字元串中首次出現的位置;number為負數從 ...
  • if(val.toString().length == 10){ val = val.toString().padEnd(13,"0")*1 //不夠十三位放後面補零,超過13位也可以 } toString() 方法可把一個邏輯值轉換為字元串,並返回結果。 ES2017 引入了字元串補全長度的功能。 ...
  • 0. Typescript Typescript對於前端來說可以說是越來越重要了,前端的很多項目都用Typescript進行了重構。這主要得益於Typescript有比較好的類型支持,在編碼的過程中可以很好地做一些類型推斷(主要是編輯器會有代碼提示,就很舒服)。再者Typescript的語法相較於j ...
  • 首先創建一個calculate.jsp 這是用Javascript代碼來驗證,代碼如下: <script type="text/javascript"> function check(){ if(form.n1.value==""&&form.value.n2==""){ window.alert( ...
  • Daily ,一個 寫的 android app 。 下拉刷新獲取:圖片、詩句、言語、音樂、樂評、雨聲、知乎日報、歷史上的今天。 可以說是一個 入門級 的 應用。 "項目地址:https://github.com/imguolao/Daily" 效果預覽 第三方 api 項目中的數據均來源於第三方 ...
  • 如果流圖片要載入失敗, 就會顯示找不到圖片的裂痕 代碼如下: 圖片目錄: 修改方法 : img標簽src為loading占點陣圖的地址,lay-src為正圖地址,圖片懶載入時會替換src<img src="loadingImg/loading.gif" lay-src="ddd.jpg"> 修改jsl ...
  • html代碼: js代碼: ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...