jQuery拖拽的彈出層效果
分享一段程式碼例項,它實現了點選按鈕彈出一個層的功能,並且可以使用滑鼠拖動層的移動。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #show{ width:100px; height:30px; line-height:30px; margin:0px auto; background-color:red; } #dialog{ display:none; padding:8px; } </style> <script src="http://code.jquery.com/jquery-latest.js"></script> <script> var _move=false; var _x,_y; $(document).ready(function(){ $("#show").click(function(event){ var str="螞蟻部落歡迎您"; $("#txt").html(str); var wid = $(window).width(); var hei = $(window).height(); var left = (wid - 400)/2+"px"; var top = (hei - 200)/2+"px"; $("#dialog").css({ "z-index":"5", "position":"absolute", "display":"block", "width":"400px", "height":"200px", "left":left, "top":top, "background":"#EEEEEE", "color":"red", "border":"1px solid red" }) }) $("#close").click(function(event){ $("#dialog").slideUp("slow"); }) $("#dialog").mousedown(function(e){ _move=true; _x=e.pageX-parseInt($("#dialog").css("left")); _y=e.pageY-parseInt($("#dialog").css("top")); }); $(document).mousemove(function(e){ if(_move){ var x=e.pageX-_x; var y=e.pageY-_y; $("#dialog").css({top:y,left:x}); } }).mouseup(function(){ _move=false; }); }); </script> </head> <body> <div id="show">點選彈出層</div> <div id="dialog"> <div id="txt"></div> <br/> <div style="text-align:right;padding-right:50px;"> <input id='close' type="button" value="關閉此彈出層"> </div> </div> </body> </html>
彈出的層可以進行拖動效果並且在視窗中居中,下面介紹一下實現過程。
一.程式碼註釋:
(1).var _x,_y,宣告兩個變數,用來儲存座標值。
(2).var _move=false,宣告一個變數,並賦值為false,用來標識彈出層是否可以拖動。
(3).$(document).ready(function(){}),文件結構完全載入完畢再去執行函式中的程式碼。
(4).$("#show").click(function(event){}),為id屬性值為show的元素註冊click事件處理函式。
(5).var str="螞蟻部落歡迎您",宣告一個字串作為顯示的內容。
(6).$("#txt").html(str),將字串寫入id屬性值為txt的元素中。
(7).var wid = $(window).width(),獲取視窗的寬度。
(8).var hei = $(window).height(),獲取視窗的高度。
(9).var left = (wid - 400)/2+"px",設定彈出視窗的left屬性值,可以讓彈出視窗水平居中。
(10).var top = (hei - 200)/2+"px",設定彈出視窗的top屬性值,可以讓彈出視窗垂直居中。
(11).$("#dialog").css({}),設定彈視窗的一些樣式屬性。
(12).$("#close").click(function(event){}),為關閉按鈕註冊click事件處理函式。
(13).$("#dialog").slideUp("slow"),將彈出框收起,也就是隱藏彈出框。
(14).$("#dialog").mousedown(function(e){}),為id屬性值為dialog的元素註冊mousedown事件處理函式。
(15)._move=true,將變數的值設定為true,用以標識彈出視窗是可以拖動的。
(16)._x=e.pageX-parseInt($("#dialog").css("left")),獲取當滑鼠按下時,滑鼠指標距離彈出視窗左邊緣的距離。
(17)._y=e.pageY-parseInt($("#dialog").css("top")),獲取當滑鼠按下時,滑鼠指標距離彈出視窗上邊緣的距離。
(18).$(document).mousemove(function(e){}),為document物件註冊mousemove事件處理函式,之所以要註冊在document上而不是彈出層上,這樣可以利用事件冒泡現象防止滑鼠指標移出彈出層後,導致拖動無效的情況。
(19).if(_move),判斷是否可以拖動。
(20).var x=e.pageX-_x,獲取拖動過程中彈出層的left屬性值。
(21).var y=e.pageY-_y,獲取拖動過程中彈出層的top屬性值。
(22).$("#dialog").css({top:y,left:x}),設定left和top屬性值。
(23).mouseup(function(){_move=false;}),為彈出層註冊mouseup事件處理函式,當滑鼠鬆開的時候,將_move變數值設定為false,也就是不能夠拖動了,當然這裡使用是鏈式呼叫方式。
二.相關閱讀:
(1).html()參閱jQuery html()一章節。
(2).width()參閱jQuery width()一章節。
(3).height()參閱jQuery height()一章節。
(4).css()參閱jQuery css()一章節。
(5).click事件參閱jQuery click事件一章節。
(6).slideUp()參閱jQuery slideUp()一章節。
(7).mousedown參閱jQuery mousedown事件一章節。
(8).pageX屬性參閱jQuery event.pageX一章節。
(9).parseInt()參閱javascript parseInt()一章節。
(10).mouseup事件參閱jQuery mouseup事件一章節。
相關文章
- jQuery跟隨滑鼠移動的彈出層效果jQuery
- jQuery實現的自定義可以拖動的彈出層效果jQuery
- jQuery地圖熱點效果-滑鼠經過彈出提示層資訊jQuery地圖
- 使用jquery製作彈出框效果jQuery
- jQuery彈出層外掛popboxjQuery
- jQuery div拖拽效果詳解jQuery
- jquery實現的彈出居中視窗效果jQuery
- JavaScript點選按鈕彈出層效果JavaScript
- 純CSS彈出層,城市切換效果CSS
- jQuery彈出帶有遮罩視窗效果jQuery遮罩
- js實現彈出層滑鼠跟隨效果JS
- css滑鼠懸浮彈出說明層效果CSS
- jquery智慧彈出層,自動判斷位置jQuery
- jquery智慧彈出層,自己主動推斷位置jQuery
- 奉獻一個實用的JS動畫彈出層效果JS動畫
- jQuery實現的點選彈出登陸視窗效果jQuery
- jQuery彈幕效果詳解jQuery
- jQuery水滴彈性摘取效果jQuery
- jQuery的ztree仿windows檔案新建和拖拽效果jQueryWindows
- jQuery點選顯示彈出層例項程式碼jQuery
- jquery多功能彈出層外掛LightCase教程jQuery
- jquery滑鼠懸浮彈出帶有箭頭的tips效果jQuery
- bootstrap – 彈出層boot
- Android中ScrollView實現拖拽反彈效果動畫AndroidView動畫
- jQuery實現的彈出垂直水平居中視窗效果程式碼例項jQuery
- layui使用彈出層 關閉後彈層的內容又顯示出來UI
- JavaScript拖拽效果JavaScript
- jquery div層拖動效果封裝jQuery封裝
- jquery 彈出登陸框,簡單易懂!修改密碼效果程式碼jQuery密碼
- jquery 滑鼠移到圖片彈出浮動層顯示大圖片例子jQuery
- 原生JS拖拽效果JS
- 自定義拖拽效果
- canvas矩形拖拽效果Canvas
- JQuery UI 拖拽排序jQueryUI排序
- js點選彈出和隱藏一個div層效果程式碼例項JS
- JavaScript 限定範圍的拖拽效果JavaScript
- jQuery點選滑出層效果程式碼例項jQuery
- Flutter 可拖拽的層疊卡片Flutter