jQuery實(shí)現(xiàn)點(diǎn)擊按鈕彈出可拖拽模態(tài)對(duì)話框完整實(shí)例【測(cè)試可用】 原創(chuàng)
css部分:
.dialog { display: none; /* 初始隱藏 */ position: absolute; width: 300px; height: 200px; top: 50px; left: 50px; background-color: #fff; border: 1px solid #ccc; box-shadow: 0 0 10px rgba(0,0,0,.2); } .dialog-header { height: 30px; line-height: 30px; padding: 0 10px; font-size: 16px; font-weight: bold; background-color: #f5f5f5; border-bottom: 1px solid #ccc; cursor: move; /* 允許拖拽 */ } .dialog-body { padding: 10px; } /* 遮罩層樣式 */ .mask { display: none; /* 初始隱藏 */ position: fixed; width: 100%; height: 100%; top: 0; left: 0; background-color: rgba(0,0,0,.3); }
html部分:
<!-- 點(diǎn)擊按鈕彈出對(duì)話框的按鈕 --> <button class="dialog-trigger">點(diǎn)擊彈出對(duì)話框</button> <!-- 對(duì)話框 --> <div class="dialog" id="dialog"> <div class="dialog-header">對(duì)話框</div> <div class="dialog-body">這里是對(duì)話框內(nèi)容</div> </div>
js部分:
$(function() { var $dialog = $('.dialog'); // 對(duì)話框 var $mask = $('.mask'); // 遮罩層 var isDragging = false; // 是否拖拽中 // 點(diǎn)擊彈出對(duì)話框 $('.dialog-trigger').click(function() { $dialog.show(); // 顯示對(duì)話框 $mask.show(); // 顯示遮罩層 }); // 拖拽對(duì)話框 $dialog.find('.dialog-header').mousedown(function(e) { isDragging = true; // 開(kāi)始拖拽 var startX = e.pageX; // 鼠標(biāo)按下時(shí)的X坐標(biāo) var startY = e.pageY; // 鼠標(biāo)按下時(shí)的Y坐標(biāo) var left = $dialog.offset().left; // 對(duì)話框初始的left值 var top = $dialog.offset().top; // 對(duì)話框初始的top值 // 拖拽事件 $(document).mousemove(function(e) { if (isDragging) { var moveX = e.pageX - startX; // 鼠標(biāo)移動(dòng)的X距離 var moveY = e.pageY - startY; // 鼠標(biāo)移動(dòng)的Y距離 $dialog.css({ left: left + moveX + 'px', top: top + moveY + 'px' }); } }); // 停止拖拽事件 $(document).mouseup(function() { isDragging = false; }); }); // 點(diǎn)擊遮罩層或?qū)υ捒虻年P(guān)閉按鈕,隱藏對(duì)話框和遮罩層 $mask.click(function() { $dialog.hide(); $mask.hide(); }); $dialog.find('.dialog-close').click(function() { $dialog.hide(); $mask.hide(); }); });
完整實(shí)例如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery點(diǎn)擊彈出模態(tài)對(duì)話框</title> <style> .dialog { display: none; /* 初始隱藏 */ position: absolute; width: 300px; height: 200px; top: 50px; left: 50px; background-color: #fff; border: 1px solid #ccc; box-shadow: 0 0 10px rgba(0,0,0,.2); } .dialog-header { height: 30px; line-height: 30px; padding: 0 10px; font-size: 16px; font-weight: bold; background-color: #f5f5f5; border-bottom: 1px solid #ccc; cursor: move; /* 允許拖拽 */ } .dialog-body { padding: 10px; } /* 遮罩層樣式 */ .mask { display: none; /* 初始隱藏 */ position: fixed; width: 100%; height: 100%; top: 0; left: 0; background-color: rgba(0,0,0,.3); } </style> </head> <body> <!-- 點(diǎn)擊按鈕彈出對(duì)話框的按鈕 --> <button class="dialog-trigger">點(diǎn)擊彈出對(duì)話框</button> <!-- 對(duì)話框 --> <div class="dialog" id="dialog"> <div class="dialog-header">對(duì)話框</div> <div class="dialog-body">這里是對(duì)話框內(nèi)容</div> </div> <script src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script> <script> $(function() { var $dialog = $('.dialog'); // 對(duì)話框 var $mask = $('.mask'); // 遮罩層 var isDragging = false; // 是否拖拽中 // 點(diǎn)擊彈出對(duì)話框 $('.dialog-trigger').click(function() { $dialog.show(); // 顯示對(duì)話框 $mask.show(); // 顯示遮罩層 }); // 拖拽對(duì)話框 $dialog.find('.dialog-header').mousedown(function(e) { isDragging = true; // 開(kāi)始拖拽 var startX = e.pageX; // 鼠標(biāo)按下時(shí)的X坐標(biāo) var startY = e.pageY; // 鼠標(biāo)按下時(shí)的Y坐標(biāo) var left = $dialog.offset().left; // 對(duì)話框初始的left值 var top = $dialog.offset().top; // 對(duì)話框初始的top值 // 拖拽事件 $(document).mousemove(function(e) { if (isDragging) { var moveX = e.pageX - startX; // 鼠標(biāo)移動(dòng)的X距離 var moveY = e.pageY - startY; // 鼠標(biāo)移動(dòng)的Y距離 $dialog.css({ left: left + moveX + 'px', top: top + moveY + 'px' }); } }); // 停止拖拽事件 $(document).mouseup(function() { isDragging = false; }); }); // 點(diǎn)擊遮罩層或?qū)υ捒虻年P(guān)閉按鈕,隱藏對(duì)話框和遮罩層 $mask.click(function() { $dialog.hide(); $mask.hide(); }); $dialog.find('.dialog-close').click(function() { $dialog.hide(); $mask.hide(); }); }); </script> </body> </html>
感興趣的朋友可以使用本站在線工具:http://tools.jb51.net/code/HtmlJsRun 測(cè)試上述代碼運(yùn)行效果!
PS:該實(shí)例中的模態(tài)對(duì)話框?qū)崿F(xiàn),其實(shí)是增加上了一層mask的遮罩層,將這層遮罩層去掉,就是非模態(tài)對(duì)話框!感興趣的朋友可以自己動(dòng)手調(diào)試一下~
- JQuery EasyUI 對(duì)話框的使用方法
- jQuery Dialog 彈出層對(duì)話框插件
- jQuery UI Dialog 創(chuàng)建友好的彈出對(duì)話框?qū)崿F(xiàn)代碼
- jquery刪除提示框彈出是否刪除對(duì)話框
- jQuery UI庫(kù)中dialog對(duì)話框功能使用全解析
- jquery實(shí)現(xiàn)點(diǎn)擊彈出對(duì)話框
- jBox 2.3基于jquery的最新多功能對(duì)話框插件 常見(jiàn)使用問(wèn)題解答
- Jquery EasyUI中彈出確認(rèn)對(duì)話框以及加載效果示例代碼
- JQuery彈出炫麗對(duì)話框的同時(shí)讓背景變灰色
- boxy基于jquery的彈出層對(duì)話框插件擴(kuò)展應(yīng)用 彈出層選擇器
- JQuery實(shí)現(xiàn)自定義對(duì)話框的代碼
相關(guān)文章
jquery checkbox實(shí)現(xiàn)單選小例
checkbox是復(fù)選框如何將其變?yōu)閱芜x呢?下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2013-11-11逐一介紹Jquery data()、Jquery stop()、jquery delay()函數(shù)(詳)
這篇文章逐一介紹Jquery data()、Jquery stop()、jquery delay()函數(shù)(詳)的相關(guān)資料,需要的朋友可以參考下2015-11-11利用jQuery實(shí)現(xiàn)簡(jiǎn)單的拖曳效果實(shí)例代碼
最近發(fā)現(xiàn)一個(gè)網(wǎng)站的拖拽效果挺好的,個(gè)人覺(jué)得是一種不錯(cuò)的用戶(hù)體驗(yàn),抽空研究了一下,所以這篇文章主要給大家介紹了關(guān)于利用jQuery實(shí)現(xiàn)簡(jiǎn)單的拖曳效果的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起看看詳細(xì)的介紹吧。2017-10-10juqery 學(xué)習(xí)之六 CSS--css、位置、寬高
juqery 學(xué)習(xí)之六 CSS--css、位置、寬高,需要的朋友可以參考下。2011-02-02jQuery CSS()方法改變現(xiàn)有的CSS樣式
css()方法在使用上具有多樣性。其中有一種可接受兩個(gè)輸入?yún)?shù):樣式屬性和樣式值,兩者之間用逗號(hào)分隔,下面通過(guò)實(shí)例為大家介紹下2014-08-08