当前位置:首页 > JavaScript

js手动实现弹窗

2026-02-02 19:11:41JavaScript

实现基础弹窗结构

使用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: 600px;
  position: relative;
}

.close-btn {
  position: absolute;
  right: 15px;
  top: 5px;
  font-size: 24px;
  cursor: pointer;
}
</style>

添加弹窗控制逻辑

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

js手动实现弹窗

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

// 显示弹窗函数
function openModal() {
  modal.style.display = "block";
  document.body.style.overflow = "hidden"; // 防止背景滚动
}

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

// 点击关闭按钮
closeBtn.onclick = closeModal;

// 点击弹窗外部区域关闭
window.onclick = function(event) {
  if (event.target === modal) {
    closeModal();
  }
}

添加动画效果

为弹窗添加CSS过渡动画:

js手动实现弹窗

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

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

实现可配置弹窗

创建更灵活的弹窗函数,支持动态内容:

function showModal(options) {
  const { title, content, width, buttons } = options || {};
  const modal = document.createElement('div');
  modal.className = 'modal';
  modal.innerHTML = `
    <div class="modal-content" style="width: ${width || '80%'}">
      <span class="close-btn">&times;</span>
      ${title ? `<h3>${title}</h3>` : ''}
      <div class="modal-body">${content || ''}</div>
      ${buttons ? `<div class="modal-footer">${buttons.map(btn => 
        `<button class="${btn.class || ''}">${btn.text}</button>`
      ).join('')}</div>` : ''}
    </div>
  `;

  document.body.appendChild(modal);
  modal.style.display = 'block';

  modal.querySelector('.close-btn').onclick = () => {
    document.body.removeChild(modal);
  };
}

// 使用示例
showModal({
  title: '提示',
  content: '确认要执行此操作吗?',
  buttons: [
    { text: '取消', class: 'cancel-btn' },
    { text: '确定', class: 'confirm-btn' }
  ]
});

弹窗类型扩展

实现不同风格的弹窗样式:

/* 警告型弹窗 */
.alert-modal .modal-content {
  border-left: 5px solid #ff9800;
}

/* 确认型弹窗 */
.confirm-modal .modal-footer {
  text-align: right;
  padding-top: 15px;
}

.confirm-modal button {
  padding: 8px 15px;
  margin-left: 10px;
}

.confirm-modal .confirm-btn {
  background-color: #4CAF50;
  color: white;
}

标签: js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…