当前位置:首页 > JavaScript

js实现modal弹出

2026-03-15 19:27:22JavaScript

使用原生JavaScript实现Modal弹出框

通过display属性控制Modal的显示与隐藏
创建HTML结构,包含Modal容器、内容区和关闭按钮

<div id="myModal" class="modal">
  <div class="modal-content">
    <span class="close">&times;</span>
    <p>这里是Modal内容</p>
  </div>
</div>

添加CSS样式定义Modal外观

.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控制逻辑

js实现modal弹出

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

// 点击关闭按钮时隐藏Modal
span.onclick = function() {
  modal.style.display = "none";
}

// 点击Modal外部区域时隐藏
window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}

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

使用Bootstrap实现Modal

引入Bootstrap库后直接使用预设组件

<!-- 触发按钮 -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
  打开Modal
</button>

<!-- Modal结构 -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">标题</h5>
        <button type="button" class="close" data-dismiss="modal">
          <span>&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <p>Modal内容</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
      </div>
    </div>
  </div>
</div>

使用第三方库实现高级Modal

通过SweetAlert2库创建美观的Modal
安装库:npm install sweetalert2
基础用法示例:

js实现modal弹出

import Swal from 'sweetalert2'

Swal.fire({
  title: '自定义Modal',
  html: '<p>支持HTML内容</p>',
  icon: 'info',
  confirmButtonText: '确定'
})

高级配置选项:

Swal.fire({
  title: '复杂Modal',
  showCancelButton: true,
  confirmButtonColor: '#3085d6',
  cancelButtonColor: '#d33',
  input: 'text',
  inputPlaceholder: '请输入内容...'
}).then((result) => {
  if (result.isConfirmed) {
    console.log(result.value)
  }
})

实现可拖拽Modal

为原生Modal添加拖拽功能

const modalContent = document.querySelector('.modal-content');
let isDragging = false;
let offsetX, offsetY;

modalContent.addEventListener('mousedown', (e) => {
  isDragging = true;
  offsetX = e.clientX - modalContent.getBoundingClientRect().left;
  offsetY = e.clientY - modalContent.getBoundingClientRect().top;
});

document.addEventListener('mousemove', (e) => {
  if (!isDragging) return;
  modalContent.style.left = `${e.clientX - offsetX}px`;
  modalContent.style.top = `${e.clientY - offsetY}px`;
});

document.addEventListener('mouseup', () => {
  isDragging = false;
});

需要添加CSS定位支持:

.modal-content {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

标签: 弹出js
分享给朋友:

相关文章

vue实现弹出卡片

vue实现弹出卡片

Vue 实现弹出卡片的方法 使用 v-if 或 v-show 控制显示 通过 Vue 的指令 v-if 或 v-show 可以控制弹出卡片的显示和隐藏。v-if 会动态添加或移除 DOM 元素,而 v…

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现打印

js实现打印

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

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

js实现tab选项卡切换

js实现tab选项卡切换

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