JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法

下面是JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法的完整攻略。

1. HTML结构

先看一下要实现的页面结构,包含了一个按钮和一个弹框:

<button id="showModal">打开弹框</button>

<div id="mask"></div>
<div id="modal">
  <h2>弹框标题</h2>
  <p>弹框内容</p>
  <button id="closeModal">关闭</button>
</div>

其中,#mask是遮罩层,#modal是弹框层。

2. CSS样式

接下来先设置好基础的样式:

#mask {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5); /* 半透明黑色 */
  z-index: 9999; /* 比后面的内容都要高 */
  display: none; /* 隐藏 */
}

#modal {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%); /* 居中 */
  z-index: 10000; /* 比遮罩层高 */
  background-color: #fff; /* 白色背景 */
  padding: 20px;
  border-radius: 5px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); /* 阴影 */
  display: none; /* 隐藏 */
}

这里设置了遮罩层和弹框层的基础样式,并将它们都设为隐藏状态。

3. JS代码

接下来是JS的部分。

首先,我们需要使用JS监听按钮点击事件,来触发弹框的弹出:

var showModalBtn = document.getElementById('showModal');
var closeModalBtn = document.getElementById('closeModal');

showModalBtn.addEventListener('click', function() {
  document.getElementById('mask').style.display = 'block';
  document.getElementById('modal').style.display = 'block';
});

这里使用了addEventListener来监听按钮的点击事件,一旦点击就将遮罩层和弹框层的display属性都设置为block,显示出来。

然后,我们需要使用JS监听遮罩层的点击事件和关闭按钮的点击事件,来触发弹框的关闭:

document.getElementById('mask').addEventListener('click', function() {
  hideModal();
});

closeModalBtn.addEventListener('click', function() {
  hideModal();
});

function hideModal() {
  document.getElementById('mask').style.display = 'none';
  document.getElementById('modal').style.display = 'none';
}

这里使用了addEventListener来监听遮罩层的点击事件和关闭按钮的点击事件,一旦点击就调用hideModal函数,将遮罩层和弹框层的display属性都设置为none,隐藏起来。

4. 总结

以上就是JS+CSS实现弹出全屏灰黑色透明遮罩效果的完整攻略。通过设置基础样式和使用JS监听事件,我们能够实现弹框层的弹出和关闭,从而达到全屏灰黑色透明遮罩的效果。

以下是两个示例说明:

示例一

CodePen上创建一个新的Pen,将以下代码复制到HTML部分:

<button id="showModal">打开弹框</button>

<div id="mask"></div>
<div id="modal">
  <h2>弹框标题</h2>
  <p>弹框内容</p>
  <button id="closeModal">关闭</button>
</div>

将以下代码复制到CSS部分:

#mask {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5); /* 半透明黑色 */
  z-index: 9999; /* 比后面的内容都要高 */
  display: none; /* 隐藏 */
}

#modal {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%); /* 居中 */
  z-index: 10000; /* 比遮罩层高 */
  background-color: #fff; /* 白色背景 */
  padding: 20px;
  border-radius: 5px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); /* 阴影 */
  display: none; /* 隐藏 */
}

将以下代码复制到JS部分:

var showModalBtn = document.getElementById('showModal');
var closeModalBtn = document.getElementById('closeModal');

showModalBtn.addEventListener('click', function() {
  document.getElementById('mask').style.display = 'block';
  document.getElementById('modal').style.display = 'block';
});

document.getElementById('mask').addEventListener('click', function() {
  hideModal();
});

closeModalBtn.addEventListener('click', function() {
  hideModal();
});

function hideModal() {
  document.getElementById('mask').style.display = 'none';
  document.getElementById('modal').style.display = 'none';
}

这时点击运行就能看到一个按钮,点击后弹出一个带遮罩的弹框。

示例二

在一个普通的网页中,创建一个按钮和一个弹框,HTML部分如下:

<button id="showModal">打开弹框</button>

<div id="mask"></div>
<div id="modal">
  <h2>弹框标题</h2>
  <p>弹框内容</p>
  <button id="closeModal">关闭</button>
</div>

<head>标签内添加以下样式表:

<style>
#mask {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5); /* 半透明黑色 */
  z-index: 9999; /* 比后面的内容都要高 */
  display: none; /* 隐藏 */
}

#modal {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%); /* 居中 */
  z-index: 10000; /* 比遮罩层高 */
  background-color: #fff; /* 白色背景 */
  padding: 20px;
  border-radius: 5px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); /* 阴影 */
  display: none; /* 隐藏 */
}
</style>

<body>标签内添加以下JS代码:

<script>
var showModalBtn = document.getElementById('showModal');
var closeModalBtn = document.getElementById('closeModal');

showModalBtn.addEventListener('click', function() {
  document.getElementById('mask').style.display = 'block';
  document.getElementById('modal').style.display = 'block';
});

document.getElementById('mask').addEventListener('click', function() {
  hideModal();
});

closeModalBtn.addEventListener('click', function() {
  hideModal();
});

function hideModal() {
  document.getElementById('mask').style.display = 'none';
  document.getElementById('modal').style.display = 'none';
}
</script>

这时刷新页面就能看到一个按钮,点击后弹出一个带遮罩的弹框。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 前端编码规范(4)—— CSS 和 Sass (SCSS) 开发规范

    下面是关于“前端编码规范(4)—— CSS 和 Sass (SCSS) 开发规范”的完整攻略。 目录 命名规范 代码格式 注释规范 SCSS 规范 示例说明 命名规范 选择器和属性命名使用小写字母 : 所有的选择器(class和id)和属性名都应当使用小写字母。 共同前缀 : 对于属于同一组件或者定制化组件的样式,使用共同的前缀,以区别于其他样式。 中划线(…

    css 2023年6月9日
    00
  • 详解CSS中的flex容器与flex属性

    详解CSS中的flex容器与flex属性 在CSS中,我们可以使用flex布局来创建灵活的布局方式。在flex布局中,有两个重要的概念:flex容器和flex项。在本文中,我们将深入探讨flex容器与flex属性,以便更好地理解如何使用flex布局。 什么是flex容器 flex容器是一个用于包含flex项的容器,这个容器将使用flex布局来排列这些项。我们…

    css 2023年6月11日
    00
  • css 列表菜单的设计

    关于“CSS 列表菜单的设计”的完整攻略,我给您提供以下几点建议: 1. 设计导航菜单的结构 在设计CSS列表菜单前,需要先设计出导航菜单的基础结构。通常情况下,导航菜单的结构分为两个部分,一个是顶部菜单栏,另一个是下拉菜单栏。常见的设计是,顶部菜单栏包含菜单项,每个菜单项对应于一个下拉菜单栏,里面又列出了子菜单项。在HTML中,通常使用<ul>…

    css 2023年6月9日
    00
  • HTML中的数据绑定

    HTML中的数据绑定是指将一个HTML元素和一些数据绑定在一起的过程,数据的改变会自动地反映在绑定的HTML元素中。在实现数据绑定的过程中,常用的方法是使用JavaScript框架或者库,例如Vue.js、React等,这些框架都提供了数据绑定的功能。 下面我们介绍一下Vue.js和React中的数据绑定实现方法。 Vue.js中的数据绑定 Vue.js是一…

    css 2023年6月9日
    00
  • 对常见的css属性进行浏览器兼容性总结(推荐)

    介绍对常见的CSS属性进行浏览器兼容性总结的攻略,具体流程如下: 步骤一:了解CSS属性的浏览器兼容性 首先,我们需要了解CSS属性的浏览器兼容性,以便在编写CSS时考虑到不同浏览器的差异。常用的网站包括caniuse.com和mdn,这些网站可以告诉我们使用不同CSS属性或属性值在各种浏览器中的情况。我们还可以使用CSS预处理器如LESS或Sass来处理浏…

    css 2023年6月10日
    00
  • html5+css3气泡组件的实现

    下面我将给出“HTML5+CSS3气泡组件的实现”的完整攻略,包含以下步骤: 第一步:HTML5基础结构 首先,我们需要在HTML页面中添加结构,包含气泡的容器和气泡本身。如下示例代码所示: <div class="bubble-container"> <div class="bubble"> …

    css 2023年6月9日
    00
  • ie 滤镜大全整理

    IE 滤镜指的是 Internet Explorer 浏览器特有的样式效果,通过应用这些滤镜,可以实现图片和文本的各种特效。以下是关于 ie 滤镜大全整理的完整攻略。 1. 网址获取 要了解 ie 滤镜大全,首先需要找到一个完整的网址。目前,比较全面的 ie 滤镜大全网址为: http://www.puritys.me/docs-blog/detail?id…

    css 2023年6月11日
    00
  • CSS 实现侧滑显示留言面板的网页组件功能

    要实现侧滑显示留言面板的网页组件功能,需要考虑以下几个步骤: 1. 界面设计 首先需要设计留言面板的界面,一般情况下需要在主界面的一侧添加一个按钮或者图标来触发侧滑显示留言面板。 代码示例1: <div class="wrapper"> <div class="main"> <button…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部