JavaScript實現(xiàn)彈出式可拖動登錄框
本文實例為大家分享了JavaScript實現(xiàn)彈出式可拖動登錄框的具體代碼,供大家參考,具體內(nèi)容如下
效果圖展示:
總體來說實現(xiàn)起來比較簡單,老規(guī)矩,先搭建html框架,代碼如下:
<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">關(guān)閉</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>
css代碼:
<style> ? ? ? ? .login-header { ? ? ? ? ? ? width: 100%; ? ? ? ? ? ? text-align: center; ? ? ? ? ? ? height: 30px; ? ? ? ? ? ? font-size: 24px; ? ? ? ? ? ? line-height: 30px; ? ? ? ? } ? ? ? ?? ? ? ? ? *{ ? ? ? ? ? ? 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>
有沒有覺得CSS才是最復(fù)雜難搞的
最后是js代碼:這里我們只讓盒子的title部分能拖動,也就是登錄框頭部部分
<script> ? ? ? ? //獲取元素 ? ? ? ? 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'); ? ? ? ? //創(chuàng)建點擊事件,點擊link后,登錄框顯示 ? ? ? ? link.addEventListener('click', function() { ? ? ? ? ? ? mask.style.display = 'block'; ? ? ? ? ? ? login.style.display = 'block'; ? ? ? ? }) ? ? ? ? //關(guān)閉后,登錄框隱藏 ? ? ? ? closeBtn.addEventListener('click', function() { ? ? ? ? ? ? mask.style.display = 'none'; ? ? ? ? ? ? login.style.display = 'none'; ? ? ? ? }) ? ? ? ? //鼠標(biāo)按下,獲取登錄框位置 ? ? ? ? title.addEventListener('mousedown', function(e) { ? ? ? ? ? ? var x = e.pageX - login.offsetLeft; ? ? ? ? ? ? var y = e.pageY - login.offsetTop; ? ? ? ? ? ? //鼠標(biāo)移動,觸發(fā)移動事件 ? ? ? ? ? ? document.addEventListener('mousemove', move) ? ? ? ? ? ? ? function move(e) { ? ? ? ? ? ? ? ? login.style.left = e.pageX - x + 'px'; ? ? ? ? ? ? ? ? login.style.top = e.pageY - y + 'px'; ? ? ? ? ? ? } ? ? ? ? ? ? //鼠標(biāo)抬起,銷毀鼠標(biāo)移動事件 ? ? ? ? ? ? document.addEventListener('mouseup', function() { ? ? ? ? ? ? ? ? document.removeEventListener('mousemove', move); ? ? ? ? ? ? }) ? ? ? ? }) </scrip>
這樣就實現(xiàn)了簡單的彈出式可移動登錄框??焐鲜志毦毎?/p>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Javascript 創(chuàng)建類并動態(tài)添加屬性及方法的簡單實現(xiàn)
下面小編就為大家?guī)硪黄狫avascript 創(chuàng)建類并動態(tài)添加屬性及方法的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10js調(diào)用瀏覽器打印模塊實現(xiàn)點擊按鈕觸發(fā)自定義函數(shù)
把瀏覽器打印的功能保留并賦予到自己添加的按鈕當(dāng)中,可以在點擊按鈕的同時觸發(fā)自定義的函數(shù)2014-03-03javascript 文本框水印/占位符(watermark/placeholder)實現(xiàn)方法
html5為表單元素(type為text/password/search/url/telephone/email)新增了一個placeholder屬性,為輸入框提供一種提示2012-01-01Javascript 調(diào)試?yán)?Firebug使用詳解六
有時候,為了更清楚方便的查看輸出信息,我們可能需要將一些調(diào)試信息進(jìn)行分組輸出,那么可以使用console.group來對信息進(jìn)行分組,在組信息輸出完成后用console.groupEnd結(jié)束分組。2009-07-07