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

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

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

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>這里是對話框內容</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>這里是對話框內容</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中的按值傳遞和按引用傳遞

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

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

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

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

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

    JS實現的集合去重,交集,并集,差集功能示例

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

    如何利用JavaScript?實現繼承

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

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

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

    JS實現的簡單下拉框聯動功能示例

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

    Javascript實現網絡監(jiān)測的方法

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

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

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

    淺談js中的變量名和函數名重名

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

最新評論

荔波县| 慈溪市| 鹿泉市| 易门县| 民丰县| 阿巴嘎旗| 亚东县| 杭锦旗| 鞍山市| 徐汇区| 大田县| 通榆县| 尉氏县| 河源市| 广饶县| 镶黄旗| 宝兴县| 怀宁县| 额敏县| 荆州市| 新闻| 常德市| 资兴市| 鸡泽县| 固始县| 龙井市| 都昌县| 龙里县| 礼泉县| 二连浩特市| 徐水县| 临西县| 扎囊县| 鸡东县| 上饶市| 广汉市| 三穗县| 丘北县| 开远市| 泉州市| 深州市|