jQuery實現(xiàn)點擊按鈕彈出可拖拽模態(tài)對話框完整實例【測試可用】 原創(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部分:
<!-- 點擊按鈕彈出對話框的按鈕 --> <button class="dialog-trigger">點擊彈出對話框</button> <!-- 對話框 --> <div class="dialog" id="dialog"> <div class="dialog-header">對話框</div> <div class="dialog-body">這里是對話框內(nèi)容</div> </div>
js部分:
$(function() {
var $dialog = $('.dialog'); // 對話框
var $mask = $('.mask'); // 遮罩層
var isDragging = false; // 是否拖拽中
// 點擊彈出對話框
$('.dialog-trigger').click(function() {
$dialog.show(); // 顯示對話框
$mask.show(); // 顯示遮罩層
});
// 拖拽對話框
$dialog.find('.dialog-header').mousedown(function(e) {
isDragging = true; // 開始拖拽
var startX = e.pageX; // 鼠標按下時的X坐標
var startY = e.pageY; // 鼠標按下時的Y坐標
var left = $dialog.offset().left; // 對話框初始的left值
var top = $dialog.offset().top; // 對話框初始的top值
// 拖拽事件
$(document).mousemove(function(e) {
if (isDragging) {
var moveX = e.pageX - startX; // 鼠標移動的X距離
var moveY = e.pageY - startY; // 鼠標移動的Y距離
$dialog.css({
left: left + moveX + 'px',
top: top + moveY + 'px'
});
}
});
// 停止拖拽事件
$(document).mouseup(function() {
isDragging = false;
});
});
// 點擊遮罩層或?qū)υ捒虻年P(guān)閉按鈕,隱藏對話框和遮罩層
$mask.click(function() {
$dialog.hide();
$mask.hide();
});
$dialog.find('.dialog-close').click(function() {
$dialog.hide();
$mask.hide();
});
});完整實例如下:
<!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點擊彈出模態(tài)對話框</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>
<!-- 點擊按鈕彈出對話框的按鈕 -->
<button class="dialog-trigger">點擊彈出對話框</button>
<!-- 對話框 -->
<div class="dialog" id="dialog">
<div class="dialog-header">對話框</div>
<div class="dialog-body">這里是對話框內(nèi)容</div>
</div>
<script src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script>
<script>
$(function() {
var $dialog = $('.dialog'); // 對話框
var $mask = $('.mask'); // 遮罩層
var isDragging = false; // 是否拖拽中
// 點擊彈出對話框
$('.dialog-trigger').click(function() {
$dialog.show(); // 顯示對話框
$mask.show(); // 顯示遮罩層
});
// 拖拽對話框
$dialog.find('.dialog-header').mousedown(function(e) {
isDragging = true; // 開始拖拽
var startX = e.pageX; // 鼠標按下時的X坐標
var startY = e.pageY; // 鼠標按下時的Y坐標
var left = $dialog.offset().left; // 對話框初始的left值
var top = $dialog.offset().top; // 對話框初始的top值
// 拖拽事件
$(document).mousemove(function(e) {
if (isDragging) {
var moveX = e.pageX - startX; // 鼠標移動的X距離
var moveY = e.pageY - startY; // 鼠標移動的Y距離
$dialog.css({
left: left + moveX + 'px',
top: top + moveY + 'px'
});
}
});
// 停止拖拽事件
$(document).mouseup(function() {
isDragging = false;
});
});
// 點擊遮罩層或?qū)υ捒虻年P(guān)閉按鈕,隱藏對話框和遮罩層
$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 測試上述代碼運行效果!
PS:該實例中的模態(tài)對話框?qū)崿F(xiàn),其實是增加上了一層mask的遮罩層,將這層遮罩層去掉,就是非模態(tài)對話框!感興趣的朋友可以自己動手調(diào)試一下~
- JQuery EasyUI 對話框的使用方法
- jQuery Dialog 彈出層對話框插件
- jQuery UI Dialog 創(chuàng)建友好的彈出對話框?qū)崿F(xiàn)代碼
- jquery刪除提示框彈出是否刪除對話框
- jQuery UI庫中dialog對話框功能使用全解析
- jquery實現(xiàn)點擊彈出對話框
- jBox 2.3基于jquery的最新多功能對話框插件 常見使用問題解答
- Jquery EasyUI中彈出確認對話框以及加載效果示例代碼
- JQuery彈出炫麗對話框的同時讓背景變灰色
- boxy基于jquery的彈出層對話框插件擴展應用 彈出層選擇器
- JQuery實現(xiàn)自定義對話框的代碼
相關(guān)文章
使用Ajax和Jquery配合數(shù)據(jù)庫實現(xiàn)下拉框的二級聯(lián)動的示例
下面小編就為大家分享一篇使用Ajax和Jquery配合數(shù)據(jù)庫實現(xiàn)下拉框的二級聯(lián)動的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Jquery實現(xiàn)點擊按鈕,連續(xù)地向textarea中添加值的實例代碼
本篇文章主要是對Jquery實現(xiàn)點擊按鈕,連續(xù)地向textarea中添加值的實例代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-03-03
jQuery結(jié)合jQuery.cookie.js插件實現(xiàn)換膚功能示例
這篇文章主要介紹了jQuery結(jié)合jQuery.cookie.js插件實現(xiàn)換膚功能,結(jié)合實例形式分析了jQuery.cookie.js插件的常用函數(shù)功能及實現(xiàn)換膚功能的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
z-blog SyntaxHighlighter 長代碼無法換行解決辦法(基于jquery)
這篇文章主要介紹了z-blog SyntaxHighlighter 長代碼無法換行解決辦法(jquery),需要的朋友可以參考下2015-11-11
推薦40個非常優(yōu)秀的jQuery插件和教程【系列三】
jQuery 在如今的 Web 開發(fā)項目中扮演著重要角色,jQuery 以其插件眾多、獨特、輕量以及支持大規(guī)模的網(wǎng)站開發(fā)聞名。本文大家分享40個實用的 jQuery 插件,可以根據(jù)您的項目需要來選擇使用2011-11-11
淺談jQuery中對象遍歷.eq().first().last().slice()方法
本文給大家分析了jQuery中的對象遍歷.eq().first().last().slice()方法的使用,以及他們之間的區(qū)別,jQuery源碼中的使用。2014-11-11

