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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...