Ajax-day2(图书管理)-弹框显示和隐藏

Bootstrap 弹框


图书管理-Bootsrap 弹框

  1. Bootstrap 框架
  2. 渲染列表(查)
  3. 新增图书(增)
  4. 删除图书(删)
  5. 编辑图书(改)

(一)属性控制

功能:不离开当前页面,显示单独内容,供用户操作。

  1. 引入bootstrap.css 和 bootstrap.js

  2. 准备弹框标签,确认结构

  3. 通过自定义属性 ,控制弹框的显示隐藏

一、模板代码

(已引入 bootstrap 的 css 和 js 库)

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Bootstrap 弹框</title>
  <!-- 引入bootstrap.css -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
</head>

<body>
  <!-- 
    目标:使用Bootstrap弹框
    1. 引入bootstrap.css 和 bootstrap.js
    2. 准备弹框标签,确认结构
    3. 通过自定义属性,控制弹框的显示和隐藏
   -->
  <button type="button" class="btn btn-primary">
    显示弹框
  </button>

  <!-- 引入bootstrap.js -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"></script>
</body>

</html>

二、弹框模板

Bootstrap Modal:https://www.getbootstrap.cn/docs/5.0/components/modal/

找到弹框模板,并copy代码:

html 复制代码
<div class="modal" tabindex="-1">
  <div class="modal-dialog">
    <-- 弹框-内容 -->
    <div class="modal-content">
      <-- 弹框-头部 -->
      <div class="modal-header">
        <h5 class="modal-title">Modal title</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <-- 弹框-身体 -->
      <div class="modal-body">
        <p>Modal body text goes here.</p>
      </div>
      <-- 弹框-底部 -->
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

可是我们把这一段代码加入后,页面中并没有出现弹框,是什么原因呢?

F12,找到弹框标签,查看样式:

发现 display:none;

取消勾选后,弹框出现啦!

bootstrap 的 modal 弹框:添加 model 类名(默认隐藏)

三、bootsrap 的显示弹框属性

html 复制代码
<button data-bs-toggle="modal" data-bs-target="CSS选择器">
	显示弹框
</button>

<button data-bs-dismiss="modal">Close</button>

(1)显示弹框

给弹框标签加一个自定义类名"my-box"(就是我们刚刚引入的 bootstrap 弹框模板)

html 复制代码
<div class="modal my-box" tabindex="-1">...</div>

显示弹框的效果(给按钮加入显示弹框的属性):

html 复制代码
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target=".my-box">
  显示弹框
</button>

alt+B------点击按钮------弹框出现~

(2)关闭弹框

找到"弹框-头部"的右上角关闭按钮,

加入关闭弹框的属性。(模板已经加入啦,我们就不用写啦~)
data-bs-dismiss="modal"

html 复制代码
      <-- 弹框-头部 -->
      <div class="modal-header">
        <h5 class="modal-title">Modal title</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>

找到弹框底部的"Close"按钮,加入关闭弹框的属性。

(模板也写好啦,我们也不用写啦~)

html 复制代码
<-- 弹框-底部 -->
<div class="modal-footer">
  <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
  <button type="button" class="btn btn-primary">Save changes</button>
</div>

完整代码

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Bootstrap 弹框</title>
  <!-- 引入bootstrap.css -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
</head>

<body>
  <!-- 
    目标:使用Bootstrap弹框
    1. 引入bootstrap.css 和 bootstrap.js
    2. 准备弹框标签,确认结构
    3. 通过自定义属性,控制弹框的显示和隐藏
   -->
  <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target=".my-box">
    显示弹框
  </button>


  <!-- 弹框标签 -->
  <div class="modal my-box" tabindex="-1">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Modal title</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        <p>Modal body text goes here.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

  <!-- 引入bootstrap.js -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"></script>
</body>

</html>

(二)JS 控制

javascript 复制代码
// 创建弹框对象
const modalDom = document.querySelector('CSS选择器')
const modal = new bootstrap.Modal(modalDom)

// 显示弹框
modal.show()

//隐藏弹框
modal.hide()

一、模板代码

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Bootstrap 弹框</title>
  <!-- 引入bootstrap.css -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
</head>

<body>
  <!-- 
    目标:使用JS控制弹框,显示和隐藏
    1. 创建弹框对象
    2. 调用弹框对象内置方法
      .show() 显示
      .hide() 隐藏
   -->
  <button type="button" class="btn btn-primary edit-btn">
    编辑姓名
  </button>

  <div class="modal name-box" tabindex="-1">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title">请输入姓名</h5>
          <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
        </div>
        <div class="modal-body">
          <form action="">
            <span>姓名:</span>
            <input type="text" class="username">
          </form>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>
          <button type="button" class="btn btn-primary save-btn">保存</button>
        </div>
      </div>
    </div>
  </div>

  <!-- 引入bootstrap.js -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"></script>

</body>

</html>

二、步骤

1.创建弹框对象

javascript 复制代码
<script>
	const modalDom = document.querySelector('.name-box')
	const modal = new bootstrap.Modal(modalDom)
</script>

2.显示和隐藏弹框(事件监听)

javascript 复制代码
// 编辑姓名->点击->弹框显示
document.querySelector('.edit-btn').addEventListener
('click',() => {

  // 2.显示弹框
  modal.show()
})

// 保存->点击->弹框隐藏
document.querySelector('.save-btn').addEventListener
('click',() => {

  // 隐藏弹框
  modal.hide()
})

3.在显示弹框之前,赋予默认姓名;

在隐藏弹框之前,获取姓名并打印

javascript 复制代码
  <script>
    // 1.创建弹框对象
    const modalDom = document.querySelector('.name-box')
    const modal = new bootstrap.Modal(modalDom)

    // 编辑姓名->点击->赋予默认姓名->弹框显示
    document.querySelector('.edit-btn').addEventListener
    ('click',() => {

      document.querySelector('.username').value = '默认姓名'

      // 2.显示弹框
      modal.show()
    })

    // 保存->点击->获取姓名并打印->弹框隐藏
    document.querySelector('.save-btn').addEventListener
    ('click',() => {

      const username = document.querySelector('.username').value
      console.log('模拟把姓名保存到服务器上:',username)

      // 隐藏弹框
      modal.hide()
    })
  </script>

点击"保存"

控制台输出啦~

相关推荐
GDAL2 小时前
Knockout.js Virtual Elements 详解
前端·javascript·knockout
百思可瑞教育3 小时前
Vue.config.js中的Webpack配置、优化及多页面应用开发
前端·javascript·vue.js·webpack·uni-app·北京百思教育
患得患失9493 小时前
【前端】【高德地图WebJs】【知识体系搭建】面要素知识点——>多边形,圆形, 矩形,图形编辑器
前端·编辑器·高德地图·amap
歪歪1003 小时前
webpack 配置文件中 mode 有哪些模式?
开发语言·前端·javascript·webpack·前端框架·node.js
歪歪1004 小时前
如何配置Webpack以实现按需加载模块?
开发语言·前端·webpack·node.js
面向星辰6 小时前
html各种常用标签
前端·javascript·html
梦6506 小时前
HTML新属性
前端
东风西巷8 小时前
PDFgear:免费全能的PDF处理工具
前端·pdf·软件需求
森之鸟9 小时前
Mac电脑上如何打印出字体图标
前端·javascript·macos