JS實現(xiàn)拖動模態(tài)框案例
更新時間:2022年07月03日 13:18:02 作者:雙星。
這篇文章主要為大家詳細介紹了JS實現(xiàn)拖動模態(tài)框案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了JS實現(xiàn)拖動模態(tài)框的具體代碼,供大家參考,具體內容如下
效果圖:
需求分析:
- 點擊登錄后登錄表單和遮罩層顯示,點擊關閉按鈕隱藏。
- 輸入密碼時可以明文查看或者隱藏。
- 在表單的頭部按下鼠標后可以拖拽表單。
- 鼠標彈起拖拽結束。
話不多說,我們直接上代碼:
<!DOCTYPE html> <html> ? <head lang="en"> ? ? <meta charset="UTF-8"> ? ? <title></title> ? ? <style> ? ? ? ? .login-header { ? ? ? ? ? ? width: 100%; ? ? ? ? ? ? text-align: center; ? ? ? ? ? ? height: 30px; ? ? ? ? ? ? font-size: 24px; ? ? ? ? ? ? line-height: 30px; ? ? ? ? } ? ? ? ?? ? ? ? ? ul, ? ? ? ? li, ? ? ? ? ol, ? ? ? ? dl, ? ? ? ? dt, ? ? ? ? dd, ? ? ? ? div, ? ? ? ? p, ? ? ? ? span, ? ? ? ? h1, ? ? ? ? h2, ? ? ? ? h3, ? ? ? ? h4, ? ? ? ? h5, ? ? ? ? h6, ? ? ? ? a { ? ? ? ? ? ? padding: 0px; ? ? ? ? ? ? margin: 0px; ? ? ? ? } ? ? ? ?? ? ? ? ? .login { ? ? ? ? ? ? display: none; ? ? ? ? ? ? width: 512px; ? ? ? ? ? ? height: 280px; ? ? ? ? ? ? position: fixed; ? ? ? ? ? ? border: #ebebeb solid 1px; ? ? ? ? ? ? left: 50%; ? ? ? ? ? ? top: 50%; ? ? ? ? ? ? background: #ffffff; ? ? ? ? ? ? box-shadow: 0px 0px 20px #ddd; ? ? ? ? ? ? z-index: 9999; ? ? ? ? ? ? transform: translate(-50%, -50%); ? ? ? ? } ? ? ? ?? ? ? ? ? .login-title { ? ? ? ? ? ? width: 100%; ? ? ? ? ? ? margin: 10px 0px 0px 0px; ? ? ? ? ? ? text-align: center; ? ? ? ? ? ? line-height: 40px; ? ? ? ? ? ? height: 40px; ? ? ? ? ? ? font-size: 18px; ? ? ? ? ? ? position: relative; ? ? ? ? ? ? cursor: move; ? ? ? ? } ? ? ? ?? ? ? ? ? .login-input-content { ? ? ? ? ? ? margin-top: 20px; ? ? ? ? } ? ? ? ?? ? ? ? ? .login-button { ? ? ? ? ? ? width: 50%; ? ? ? ? ? ? margin: 30px auto 0px auto; ? ? ? ? ? ? line-height: 40px; ? ? ? ? ? ? font-size: 14px; ? ? ? ? ? ? border: #ebebeb 1px solid; ? ? ? ? ? ? text-align: center; ? ? ? ? } ? ? ? ?? ? ? ? ? .login-bg { ? ? ? ? ? ? display: none; ? ? ? ? ? ? width: 100%; ? ? ? ? ? ? height: 100%; ? ? ? ? ? ? position: fixed; ? ? ? ? ? ? top: 0px; ? ? ? ? ? ? left: 0px; ? ? ? ? ? ? background: rgba(0, 0, 0, .3); ? ? ? ? } ? ? ? ?? ? ? ? ? a { ? ? ? ? ? ? text-decoration: none; ? ? ? ? ? ? color: #000000; ? ? ? ? } ? ? ? ?? ? ? ? ? .login-button a { ? ? ? ? ? ? display: block; ? ? ? ? } ? ? ? ?? ? ? ? ? .login-input input.list-input { ? ? ? ? ? ? float: left; ? ? ? ? ? ? line-height: 35px; ? ? ? ? ? ? height: 35px; ? ? ? ? ? ? width: 350px; ? ? ? ? ? ? border: #ebebeb 1px solid; ? ? ? ? ? ? text-indent: 5px; ? ? ? ? } ? ? ? ?? ? ? ? ? .login-input { ? ? ? ? ? ? overflow: hidden; ? ? ? ? ? ? margin: 0px 0px 20px 0px; ? ? ? ? } ? ? ? ?? ? ? ? ? .login-input label { ? ? ? ? ? ? float: left; ? ? ? ? ? ? width: 90px; ? ? ? ? ? ? padding-right: 10px; ? ? ? ? ? ? text-align: right; ? ? ? ? ? ? line-height: 35px; ? ? ? ? ? ? height: 35px; ? ? ? ? ? ? font-size: 14px; ? ? ? ? } ? ? ? ?? ? ? ? ? .login-title span { ? ? ? ? ? ? position: absolute; ? ? ? ? ? ? font-size: 12px; ? ? ? ? ? ? right: -20px; ? ? ? ? ? ? top: -30px; ? ? ? ? ? ? background: #ffffff; ? ? ? ? ? ? border: #ebebeb solid 1px; ? ? ? ? ? ? width: 40px; ? ? ? ? ? ? height: 40px; ? ? ? ? ? ? border-radius: 20px; ? ? ? ? } ? ? </style> </head> ? <body> ? ? <div class="login-header"><a id="link" href="javascript:;" >點擊,彈出登錄框</a></div> ? ? <div id="login" class="login"> ? ? ? ? <div id="title" class="login-title">登錄會員 ? ? ? ? ? ? <span><a id="closeBtn" href="javascript:void(0);" class="close-login">關閉</a></span> ? ? ? ? </div> ? ? ? ? <div class="login-input-content"> ? ? ? ? ? ? <div class="login-input"> ? ? ? ? ? ? ? ? <label>用戶名:</label> ? ? ? ? ? ? ? ? <input type="text" placeholder="請輸入用戶名" name="info[username]" id="username" class="list-input"> ? ? ? ? ? ? </div> ? ? ? ? ? ? <div class="login-input"> ? ? ? ? ? ? ? ? <label>登錄密碼:</label> ? ? ? ? ? ? ? ? <input type="password" placeholder="請輸入登錄密碼" name="info[password]" id="password" class="list-input"> ? ? ? ? ? ? </div> ? ? ? ? </div> ? ? ? ? <div id="loginBtn" class="login-button"><a href="javascript:void(0);" id="login-button-submit">登錄會員</a></div> ? ? </div> ? ? <!-- 遮蓋層 --> ? ? <div id="bg" class="login-bg"></div> ? ? <script> ? ? ? ? // 1. 獲取元素 ? ? ? ? var login = document.querySelector('.login'); ? ? ? ? var mask = document.querySelector('.login-bg'); ? ? ? ? var link = document.querySelector('#link'); ? ? ? ? var closeBtn = document.querySelector('#closeBtn'); ? ? ? ? var title = document.querySelector('#title'); ? ? ? ? // 2. 點擊彈出層這個鏈接 link ?讓mask 和login 顯示出來 ? ? ? ? link.addEventListener('click', function() { ? ? ? ? ? ? ? ? mask.style.display = 'block'; ? ? ? ? ? ? ? ? login.style.display = 'block'; ? ? ? ? ? ? }) ? ? ? ? ? ? // 3. 點擊 closeBtn 就隱藏 mask 和 login? ? ? ? ? closeBtn.addEventListener('click', function() { ? ? ? ? ? ? ? ? mask.style.display = 'none'; ? ? ? ? ? ? ? ? login.style.display = 'none'; ? ? ? ? ? ? }) ? ? ? ? ? ? // 4. 開始拖拽 ? ? ? ? ? ? // (1) 當我們鼠標按下, 就獲得鼠標在盒子內的坐標 ? ? ? ? title.addEventListener('mousedown', function(e) { ? ? ? ? ? ? var x = e.pageX - login.offsetLeft; ? ? ? ? ? ? var y = e.pageY - login.offsetTop; ? ? ? ? ? ? // (2) 鼠標移動的時候,把鼠標在頁面中的坐標,減去 鼠標在盒子內的坐標就是模態(tài)框的left和top值 ? ? ? ? ? ? document.addEventListener('mousemove', move) ? ? ? ? ? ? ? function move(e) { ? ? ? ? ? ? ? ? login.style.left = e.pageX - x + 'px'; ? ? ? ? ? ? ? ? login.style.top = e.pageY - y + 'px'; ? ? ? ? ? ? } ? ? ? ? ? ? // (3) 鼠標彈起,就讓鼠標移動事件移除 ? ? ? ? ? ? document.addEventListener('mouseup', function() { ? ? ? ? ? ? ? ? document.removeEventListener('mousemove', move); ? ? ? ? ? ? }) ? ? ? ? }) ? ? </script> </body> ? </html>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
JS截取字符串 subStr()、substring()、slice() 方法示例詳解
這篇文章主要介紹了JS截取字符串 subStr()、substring()、slice() 方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01javascript中活靈活現(xiàn)的Array對象詳解
本文的內容就如同標題一樣,這篇文章將會靈活的運行Array對象的一些方法來實現(xiàn)看上去較復雜的應用。相信對大家學習或者理解javascript中的Array對象能具有一定的參考借鑒價值,有需要的朋友們下面跟著小編一起來學習學習吧。2016-11-11詳解javascript立即執(zhí)行函數(shù)表達式IIFE
本文主要介紹了javascript立即執(zhí)行函數(shù)表達式IIFE的相關知識。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02Javascript實現(xiàn)商品秒殺倒計時(時間與服務器時間同步)
在一些購物商城經(jīng)??吹接泻芏嗌唐纷雒霘⒒顒?,也就是倒計時,本篇文章給大家介紹Javascript實現(xiàn)商品秒殺倒計時(時間與服務器時間同步),需要的朋友可以了解下2015-09-09基于JS實現(xiàn)將JSON數(shù)據(jù)轉換為TypeScript類型聲明的工具
在TypeScript?項目中,我們經(jīng)常需要使用聲明一系列的ts類型。然而,手動寫的效率實在太低,本文就實現(xiàn)一個工具將?JSON?數(shù)據(jù)轉換為?TypeScript?類型定義,需要的可以參考一下2023-04-04JS實現(xiàn)數(shù)組/對象數(shù)組刪除其中某一項
這篇文章主要介紹了JS實現(xiàn)數(shù)組/對象數(shù)組刪除其中某一項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09