最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實現(xiàn)響應按鈕點擊彈出可拖拽的非模態(tài)對話框完整實例【測試可用】 原創(chuàng)

原創(chuàng)  更新時間:2023年04月23日 18:44:00   原創(chuàng) 投稿:shichen2014  
這篇文章主要介紹了js實現(xiàn)響應按鈕點擊彈出可拖拽的非模態(tài)對話框,結合完整實例形式分析了原生JavaScript實現(xiàn)的可拖拽非模態(tài)對話框實現(xiàn)技巧與使用方法,需要的朋友可以參考下

1.css部分:

.dialog {
? display: none;
? position: absolute;
? left: 50%;
? top: 50%;
? transform: translate(-50%, -50%);
? background-color: #fff;
? border-radius: 5px;
? box-shadow: 0 10px 20px rgba(0, 0, 0, .3);
? z-index: 9999;
}

.dialog-header {
? background-color: #f6f7f8;
? padding: 10px;
? border-top-left-radius: 5px;
? border-top-right-radius: 5px;
? cursor: move;
}

.dlgtitle {
? font-weight: bold;
? font-size: 16px;
}

.close-btn {
? float: right;
? cursor: pointer;
}

.dialog-content {
? padding: 20px;
}

2.html部分:

<button id="openBtn">打開對話框</button>

<div id="dialog" class="dialog">
? <div class="dialog-header">
? ? <span class="dlgtitle">對話框標題</span>
? ? <span class="close-btn">&times;</span>
? </div>
? <div class="dialog-content">
? ? <p>這里是對話框內(nèi)容</p>
? </div>
</div>

3.JavaScript部分:

var dialog = document.getElementById('dialog');
var openBtn = document.getElementById('openBtn');
var closeBtn = document.querySelector('.close-btn');
var isDragging = false;
var mouseX, mouseY, dialogLeft, dialogTop;

// 鼠標按下時記錄鼠標位置以及對話框位置
dialogHeaderMouseDown = function(e) {
? isDragging = true;
? mouseX = e.clientX;
? mouseY = e.clientY;
? dialogLeft = dialog.offsetLeft;
? dialogTop = dialog.offsetTop;
}

// 鼠標移動時移動對話框
// document.onmousemove = function(e) {
dialogHeaderMouseMove = function(e) {
? if (isDragging) {
? ? var moveX = e.clientX - mouseX;
? ? var moveY = e.clientY - mouseY;
? ? dialog.style.left = dialogLeft + moveX + 'px';
? ? dialog.style.top = dialogTop + moveY + 'px';
? }
}

// 鼠標松開時停止拖動
// document.onmouseup = function() {
dialogHeaderMouseup = function() {
? isDragging = false;
}

// 點擊打開按鈕顯示對話框
openBtn.onclick = function() {
? dialog.style.display = 'block';
}

// 點擊關閉按鈕或對話框外部關閉對話框
closeBtn.onclick = function() {
? dialog.style.display = 'none';
}

dialog.onclick = function(e) {
? if (e.target == dialog) {
? ? dialog.style.display = 'none';
? }
}

// 鼠標按下對話框頭部,開始拖動對話框
var header = document.querySelector('.dialog-header');
header.addEventListener('mousedown', dialogHeaderMouseDown);
header.addEventListener('mousemove', dialogHeaderMouseMove);
header.addEventListener('mouseup', dialogHeaderMouseup);

可以使用本站在線工具:http://tools.jb51.net/code/WebCodeRun 測試上述代碼運行效果。

附:完整示例代碼:

<!DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>可拖拽非模態(tài)對話框</title>
<style>
.dialog {
  display: none;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background-color: #fff;
  border-radius: 5px;
  box-shadow: 0 10px 20px rgba(0, 0, 0, .3);
  z-index: 9999;
}

.dialog-header {
  background-color: #f6f7f8;
  padding: 10px;
  border-top-left-radius: 5px;
  border-top-right-radius: 5px;
  cursor: move;
}

.dlgtitle {
  font-weight: bold;
  font-size: 16px;
}

.close-btn {
  float: right;
  cursor: pointer;
}

.dialog-content {
  padding: 20px;
}
</style>
</head>
<body>
<button id="openBtn">打開對話框</button>
<div id="dialog" class="dialog">
  <div class="dialog-header">
    <span class="dlgtitle">對話框標題</span>
    <span class="close-btn">&times;</span>
  </div>
  <div class="dialog-content">
    <p>這里是對話框內(nèi)容</p>
  </div>
</div>
<script>
var dialog = document.getElementById('dialog');
var openBtn = document.getElementById('openBtn');
var closeBtn = document.querySelector('.close-btn');
var isDragging = false;
var mouseX, mouseY, dialogLeft, dialogTop;

// 鼠標按下時記錄鼠標位置以及對話框位置
dialogHeaderMouseDown = function(e) {
  isDragging = true;
  mouseX = e.clientX;
  mouseY = e.clientY;
  dialogLeft = dialog.offsetLeft;
  dialogTop = dialog.offsetTop;
}

// 鼠標移動時移動對話框
// document.onmousemove = function(e) {
dialogHeaderMouseMove = function(e) {
  if (isDragging) {
    var moveX = e.clientX - mouseX;
    var moveY = e.clientY - mouseY;
    dialog.style.left = dialogLeft + moveX + 'px';
    dialog.style.top = dialogTop + moveY + 'px';
  }
}

// 鼠標松開時停止拖動
// document.onmouseup = function() {
dialogHeaderMouseup = function() {
  isDragging = false;
}

// 點擊打開按鈕顯示對話框
openBtn.onclick = function() {
  dialog.style.display = 'block';
}

// 點擊關閉按鈕或對話框外部關閉對話框
closeBtn.onclick = function() {
  dialog.style.display = 'none';
}

dialog.onclick = function(e) {
  if (e.target == dialog) {
    dialog.style.display = 'none';
  }
}

// 鼠標按下對話框頭部,開始拖動對話框
var header = document.querySelector('.dialog-header');
header.addEventListener('mousedown', dialogHeaderMouseDown);
header.addEventListener('mousemove', dialogHeaderMouseMove);
header.addEventListener('mouseup', dialogHeaderMouseup);
</script>
</body>
</html>

還可以使用本站在線工具:http://tools.jb51.net/code/HtmlJsRun 測試上述代碼運行效果!

相關文章

  • 一文詳解JavaScript中的按值傳遞和按引用傳遞

    一文詳解JavaScript中的按值傳遞和按引用傳遞

    編程語言中,把一個變量的值賦值給另一個變量,或者給函數(shù)調(diào)用傳遞參數(shù)有兩種方式:按值傳遞和按引用傳遞,本文將給大家詳細介紹JavaScript中的按值傳遞和按引用傳遞,需要的朋友可以參考下
    2024-05-05
  • Javascript表單特效之十大常用原理性樣例代碼大總結

    Javascript表單特效之十大常用原理性樣例代碼大總結

    開頭說這個常用原理性樣例,大家可能不太清楚,這篇文章主要是針對實際開發(fā)中常用的一些代碼分析,主要是針對表單處理方法的一些資料,推薦大家收藏
    2016-07-07
  • Echarts圖表中formatter的基本用法示例

    Echarts圖表中formatter的基本用法示例

    formatter 提示框浮層內(nèi)容格式器,支持字符串模板和回調(diào)函數(shù)兩種形式,下面這篇文章主要給大家介紹了關于Echarts圖表中formatter的基本用法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • JS實現(xiàn)的集合去重,交集,并集,差集功能示例

    JS實現(xiàn)的集合去重,交集,并集,差集功能示例

    這篇文章主要介紹了JS實現(xiàn)的集合去重,交集,并集,差集功能,結合實例形式分析了javascript基于數(shù)組實現(xiàn)的集合去重、交集、并集、差集等相關實現(xiàn)技巧,需要的朋友可以參考下
    2018-03-03
  • 如何利用JavaScript?實現(xiàn)繼承

    如何利用JavaScript?實現(xiàn)繼承

    這篇文章主要介紹了如何利用JavaScript?實現(xiàn)繼承,JavaScript?在編程語言界是個特殊種類,它和其他編程語言很不一樣,JavaScript可以在運行的時候動態(tài)地改變某個變量的類型,下面小編將繼續(xù)介紹JavaScript如何實現(xiàn)繼承,需要的朋友可以參考下
    2022-02-02
  • js運動框架_包括圖片的淡入淡出效果

    js運動框架_包括圖片的淡入淡出效果

    js運動框架_包括圖片的淡入淡出效果,需要的朋友可以參考一下
    2013-05-05
  • JS實現(xiàn)的簡單下拉框聯(lián)動功能示例

    JS實現(xiàn)的簡單下拉框聯(lián)動功能示例

    這篇文章主要介紹了JS實現(xiàn)的簡單下拉框聯(lián)動功能,涉及javascript事件響應及頁面元素屬性動態(tài)修改相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • Javascript實現(xiàn)網(wǎng)絡監(jiān)測的方法

    Javascript實現(xiàn)網(wǎng)絡監(jiān)測的方法

    這篇文章主要介紹了Javascript實現(xiàn)網(wǎng)絡監(jiān)測的方法,可實現(xiàn)檢測網(wǎng)絡連接及網(wǎng)速的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • JS彈出對話框返回值代碼(asp.net后臺)

    JS彈出對話框返回值代碼(asp.net后臺)

    JS彈出對話框返回值代碼,需要的朋友可以參考下。
    2010-12-12
  • 淺談js中的變量名和函數(shù)名重名

    淺談js中的變量名和函數(shù)名重名

    下面小編就為大家?guī)硪黄獪\談js中的變量名和函數(shù)名重名。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論

理塘县| 加查县| 嫩江县| 印江| 双牌县| 淮南市| 重庆市| 长春市| 焉耆| 南丹县| 黄骅市| 乐都县| 忻州市| 梨树县| 溆浦县| 苏尼特右旗| 文化| 通州市| 松原市| 威远县| 肇东市| 营山县| 天全县| 成都市| 苍溪县| 香格里拉县| 江陵县| 尉犁县| 德化县| 潍坊市| 芜湖县| 芜湖市| 秦安县| 金川县| 钟山县| 府谷县| 都江堰市| 盱眙县| 安平县| 清丰县| 高雄市|