小編給大家分享一下js如何實現(xiàn)登錄框鼠標拖拽效果,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
十余年的碾子山網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。網(wǎng)絡營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整碾子山建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“碾子山網(wǎng)站設計”,“碾子山網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
效果圖:
代碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登錄框鼠標拖拽效果</title> <style type="text/css"> body { background: url("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1488778794834&di=e97c96dfe7860297d1968c30adc862a2&imgtype=0&src=http%3A%2F%2Fpic1.5442.com%3A82%2F2015%2F0409%2F01%2F15.jpg%2521960.jpg") no-repeat top center #ffffff; background-size: 100%; padding: 0; margin: 0; font-size: 12px; font-family: "微軟雅黑", sans-serif; } .ui-dialog { width: 380px; position: absolute; z-index: 9000; top: 100px; left: 100px; border: 1px solid #d5d5d5; background-color: #ffffff; /*display: none;*/ } .ui-dialog-title { height: 48px; line-height: 48px; padding-left: 20px; color: #535353; font-size: 16px; background-color: #f5f5f5; border-bottom: 1px solid #efefef; cursor: move; } .ui-dialog-title-closebutton { width: 16px; height: 16px; display: inline-block; position: absolute; right: 20px; color: #000; text-decoration: unset; } .ui-dialog-title-closebutton:hover { color: #4ca8ff; } .ui-dialog-content { padding: 15px 20px; } .ui-dialog-pt15 { padding-top: 15px; } .ui-dialog-l40 { height: 40px; line-height: 40px; text-align: right; } .ui-dialog-input { width: 100%; height: 40px; margin: 0; padding: 0; border:1px solid #d5d5d5; font-size: 16px; color: #c1c1c1; text-indent: 25px; outline: none; } .ui-dialog-input-username { background: url("images/input_username.png") no-repeat 2px; } .ui-dialog-input-password { background: url("images/input_password.png") no-repeat 2px; } .ui-dialog-submit { width: 100%; height: 50px; background: #3b7ae3; border: none; font-size: 16px; color: #ffffff; outline: none; text-decoration: none; display: block; text-align: center; line-height: 50px; } .ui-dialog-submit:hover { background: #3f81b0; } .ui-mask { width: 100%; height: 100%; background: #000; opacity: 0.4; position: absolute; top: 0; left: 0; z-index: 8000; display: none; } .link { text-align: right; line-height: 20px; padding-right: 40px; } </style> </head> <body> <div class="ui-dialog" id="dialog"> <div class="ui-dialog-title" id="dialogTitle"> 登錄 <!-- 右上角的關(guān)閉按鈕 --> <a href="javascript:hideDialog();" rel="external nofollow" class="ui-dialog-title-closebutton">X</a> </div> <div class="ui-dialog-content"> <div class="ui-dialog-l40 ui-dialog-pt15"> <input class="ui-dialog-input ui-dialog-input-username" type="input" placeholder="手機/郵箱/用戶名" /> </div> <div class="ui-dialog-l40 ui-dialog-pt15"> <input class="ui-dialog-input ui-dialog-input-password" type="input" placeholder="密碼" /> </div> <div class="ui-dialog-l40"> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >忘記密碼</a> </div> <div> <a class="ui-dialog-submit" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >登錄</a> </div> <div class="ui-dialog-l40"> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >立即注冊</a> </div> </div> </div> <div class="ui-mask" id="mask"></div> <div class="link"> <a href="javascript:showDialog();" rel="external nofollow" >登錄</a> </div> <script type="text/javascript"> // 獲取元素對象 function g(id) { return document.getElementById(id); } // 自動居中函數(shù) -- 登錄浮層 // el {Element} function autoCenter(el) { // 獲得可視區(qū)域的寬和高 var bodyW = document.documentElement.clientWidth; var bodyH = document.documentElement.clientHeight; // 獲得元素 el 的寬和高 var elW = el.offsetWidth; var elH = el.offsetHeight; // 設置元素的 style 樣式 el.style.left = (bodyW - elW) / 2 + 'px'; el.style.top = (bodyH - elH) / 2 + 'px'; } // 擴展元素到整個可視區(qū)域 -- 遮罩層 // el {Element} function fillToBody(el) { // 將元素的寬和高設置的和可視區(qū)域一樣 el.style.width = document.documentElement.clientWidth + 'px'; el.style.height = document.documentElement.clientHeight + 'px'; } // 定義全局變量 var mouseOffsetX = 0; var mouseOffsetY = 0; var isDragging = false; // 鼠標事件1 -- 在標題欄上按下 // 計算鼠標相對拖拽元素的的左上角的坐標, 并且標記元素為可拖動 g('dialogTitle').addEventListener('mousedown', function(e) { var e = e || window.event; // 用鼠標按下時的坐標減去 dialog 的左上角坐標 mouseOffsetX = e.pageX - g('dialog').offsetLeft; mouseOffsetY = e.pageY - g('dialog').offsetTop; isDragging = true; }); // 鼠標事件2 -- 鼠標移動 document.onmousemove = function(e) { var e = e || window.event; // 鼠標當前位置 var mouseX = e.pageX; var mouseY = e.pageY; // 鼠標從單擊時至當前時刻移動的距離 var moveX = 0; var moveY = 0; if (isDragging === true) { moveX = mouseX - mouseOffsetX; moveY = mouseY - mouseOffsetY; // 范圍限定 // moveX > 0 且 moveX < (頁面最大寬度 - 浮層寬度) // moveY > 0 且 moveY < (頁面最大寬度 - 浮層高度) var pageWidth = document.documentElement.clientWidth; var pageHeight = document.documentElement.clientHeight; // 登錄浮層的寬、高 var dialogWidth = g('dialog').offsetWidth; var dialogHeight = g('dialog').offsetHeight; var maxX = pageWidth - dialogWidth; var maxY = pageHeight - dialogHeight; moveX = Math.min(maxX, Math.max(0, moveX)); moveY = Math.min(maxY, Math.max(0, moveY)); g('dialog').style.left = moveX + 'px'; g('dialog').style.top = moveY + 'px'; } }; // 鼠標事件3 -- 鼠標松開 document.onmouseup = function() { isDragging = false; }; // 展現(xiàn)登錄浮層 function showDialog() { g('dialog').style.display = 'block'; g('mask').style.display = 'block'; autoCenter(g('dialog')); fillToBody(g('mask')); } // 隱藏登錄浮層 function hideDialog() { g('dialog').style.display = 'none'; g('mask').style.display = 'none'; } window.onresize = function() { autoCenter(g('dialog')); fillToBody(g('mask')); }; showDialog(); autoCenter(g('dialog')); </script> </body> </html>
以上是“js如何實現(xiàn)登錄框鼠標拖拽效果”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享文章:js如何實現(xiàn)登錄框鼠標拖拽效果
本文地址:http://chinadenli.net/article24/ppgjje.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、網(wǎng)站內(nèi)鏈、外貿(mào)建站、服務器托管、響應式網(wǎng)站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)