前端开发社区前端开发社区
  • 首页
  • VUE.js
  • React.js
  • HTML
  • CSS
  • JavaScript
  • PHP
  • jquery
  • Java
  • MySQL
  • uniapp
前端开发社区
当前位置:首页 > JavaScript

js原生实现一个弹窗

2026-01-31 09:44:34JavaScript

使用原生JavaScript实现弹窗

方法一:基础弹窗实现

HTML结构:

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

CSS样式:

js原生实现一个弹窗

.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%;
}

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

JavaScript代码:

const modal = document.getElementById("modal");
const btn = document.getElementById("openModal");
const span = document.getElementsByClassName("close")[0];

btn.onclick = function() {
  modal.style.display = "block";
}

span.onclick = function() {
  modal.style.display = "none";
}

window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}

方法二:动态创建弹窗

JavaScript动态创建弹窗元素:

js原生实现一个弹窗

function showModal(title, content) {
  const modal = document.createElement('div');
  modal.id = 'dynamic-modal';
  modal.className = 'modal';

  const modalContent = document.createElement('div');
  modalContent.className = 'modal-content';

  const closeBtn = document.createElement('span');
  closeBtn.className = 'close';
  closeBtn.innerHTML = '&times;';

  const titleElement = document.createElement('h2');
  titleElement.textContent = title;

  const contentElement = document.createElement('p');
  contentElement.textContent = content;

  modalContent.appendChild(closeBtn);
  modalContent.appendChild(titleElement);
  modalContent.appendChild(contentElement);
  modal.appendChild(modalContent);
  document.body.appendChild(modal);

  modal.style.display = 'block';

  closeBtn.onclick = function() {
    document.body.removeChild(modal);
  }

  window.onclick = function(event) {
    if (event.target == modal) {
      document.body.removeChild(modal);
    }
  }
}

// 使用示例
document.getElementById('openModal').onclick = function() {
  showModal('提示', '这是一个动态创建的弹窗');
}

方法三:支持动画效果的弹窗

CSS添加动画效果:

.modal-content {
  animation: modalopen 0.4s;
}

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

JavaScript添加关闭动画:

function closeModal() {
  modalContent.style.animation = 'modalclose 0.4s';
  setTimeout(() => {
    modal.style.display = 'none';
    modalContent.style.animation = 'modalopen 0.4s';
  }, 400);
}

// 需要添加对应的CSS动画
@keyframes modalclose {
  from {opacity: 1; transform: translateY(0)}
  to {opacity: 0; transform: translateY(-50px)}
}

以上三种方法分别展示了基础弹窗实现、动态创建弹窗以及添加动画效果的弹窗实现方式。可以根据实际需求选择合适的方法或组合使用。

标签: js
分享给朋友:

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选…

js 实现链表

js 实现链表

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

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 cons…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

最新文章
  • elementui优势

    2026-03-05 22:54:08

  • elementui switch

    2026-03-05 22:52:53

  • elementui validate

    2026-03-05 22:51:12

  • 宝塔elementui

    2026-03-05 22:49:28

  • elementui下拉

    2026-03-05 22:47:52

标签列表
  • vue (6162)
  • 原理 (263)
  • 拖拽 (194)
  • 分页 (245)
  • 跳转 (270)
  • 页面 (481)
  • 路由 (327)
  • 列表 (207)
  • 功能 (503)
  • 项目 (218)
  • 菜单 (192)
  • 组件 (511)
  • 表格 (285)
  • 数据 (211)
  • 图片 (325)
  • js (2522)
  • 按钮 (177)
  • 如何实现 (672)
  • 效果 (277)
  • 加载 (178)
  • react (1925)
  • jquery (360)
  • css (952)
  • php (1140)
  • elementui (269)

陕ICP备2023000799号  网站地图

Powered By Z-BlogPHP. Theme by TOYEAN.