前端开发社区前端开发社区
  • 首页
  • 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样式:

.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动态创建弹窗元素:

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添加关闭动画:

js原生实现一个弹窗

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 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现变形

js实现变形

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

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

最新文章
  • java子类如何调用父类的方法

    2026-04-09 08:54:50

  • java如何定义一个类

    2026-04-09 08:51:25

  • java 如何四舍五入

    2026-04-09 08:49:47

  • java如何四舍五入

    2026-04-09 08:48:15

  • java如何输出数组中的数组

    2026-04-09 08:45:31

标签列表
  • vue (13931)
  • 原理 (626)
  • 分页 (603)
  • 跳转 (582)
  • 页面 (1094)
  • 路由 (650)
  • 列表 (473)
  • 功能 (1256)
  • 文件 (456)
  • 项目 (532)
  • 菜单 (444)
  • 组件 (1026)
  • 表格 (673)
  • 数据 (497)
  • 图片 (790)
  • js (4916)
  • 如何实现 (1693)
  • 效果 (625)
  • react (3311)
  • jquery (2238)
  • css (2728)
  • php (4572)
  • java (3021)
  • uniapp (1363)
  • elementui (828)

陕ICP备2023000799号  网站地图

Powered By Z-BlogPHP. Theme by TOYEAN.