当前位置:首页 > JavaScript

js手动实现弹窗

2026-03-15 19:30:47JavaScript

实现基础弹窗结构

使用HTML和CSS创建一个简单的弹窗容器,默认隐藏:

<div id="customModal" class="modal">
  <div class="modal-content">
    <span class="close-btn">&times;</span>
    <p>这里是弹窗内容</p>
  </div>
</div>

<style>
.modal {
  display: none;
  position: fixed;
  z-index: 1;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0,0,0,0.4);
}

.modal-content {
  background-color: #fefefe;
  margin: 15% auto;
  padding: 20px;
  border: 1px solid #888;
  width: 80%;
  max-width: 500px;
}

.close-btn {
  color: #aaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
  cursor: pointer;
}
</style>

添加弹窗控制逻辑

通过JavaScript实现弹窗的显示/隐藏功能:

js手动实现弹窗

const modal = document.getElementById("customModal");
const closeBtn = document.querySelector(".close-btn");

// 显示弹窗函数
function openModal() {
  modal.style.display = "block";
}

// 隐藏弹窗函数
function closeModal() {
  modal.style.display = "none";
}

// 点击关闭按钮
closeBtn.addEventListener("click", closeModal);

// 点击模态框外部区域关闭
window.addEventListener("click", (event) => {
  if (event.target === modal) {
    closeModal();
  }
});

添加动画效果

为弹窗添加淡入淡出动画效果:

.modal-content {
  animation: fadeIn 0.3s;
}

@keyframes fadeIn {
  from {opacity: 0; transform: translateY(-20px);}
  to {opacity: 1; transform: translateY(0);}
}

实现弹窗内容动态更新

允许动态更新弹窗内容:

js手动实现弹窗

function showModal(content) {
  const contentElement = modal.querySelector(".modal-content p");
  if(contentElement) {
    contentElement.textContent = content;
  }
  openModal();
}

// 使用示例
showModal("这是新的弹窗内容");

添加弹窗回调功能

实现关闭弹窗时的回调函数:

let modalCallback = null;

function setModalCallback(callback) {
  modalCallback = callback;
}

function closeModal() {
  modal.style.display = "none";
  if(modalCallback) {
    modalCallback();
    modalCallback = null;
  }
}

弹窗扩展功能

添加确认/取消按钮的对话框功能:

<div id="confirmModal" class="modal">
  <div class="modal-content">
    <p id="confirmMessage">确认执行此操作吗?</p>
    <div class="modal-buttons">
      <button id="confirmOk">确定</button>
      <button id="confirmCancel">取消</button>
    </div>
  </div>
</div>

<style>
.modal-buttons {
  text-align: right;
  margin-top: 20px;
}

.modal-buttons button {
  padding: 8px 16px;
  margin-left: 10px;
}
</style>
function showConfirm(message, confirmCallback, cancelCallback) {
  document.getElementById("confirmMessage").textContent = message;
  const confirmModal = document.getElementById("confirmModal");

  document.getElementById("confirmOk").onclick = function() {
    confirmModal.style.display = "none";
    if(confirmCallback) confirmCallback();
  };

  document.getElementById("confirmCancel").onclick = function() {
    confirmModal.style.display = "none";
    if(cancelCallback) cancelCallback();
  };

  confirmModal.style.display = "block";
}

标签: js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…