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日

相关文章

  • psd切图转换为div+css格式

    下面是”psd切图转换为div+css格式”的完整攻略。 一、准备工作 1. 安装photoshop软件 目前最新版本是Photoshop CC 2021。 2. 安装切图插件 常用的切图插件有: Slicy (Mac) Cut&Slice me (Mac和Windows都支持) Zeplin (Mac和Windows都支持,可以自动生成CSS代码)…

    css 2023年6月9日
    00
  • Ant Design Vue 修改表格头部样式的详细代码

    Ant Design Vue 是一套基于 Vue.js 实现的优美 UI 组件库,开发者可以使用默认样式快速创建出美观和易于理解的交互界面。其中,Ant Design Vue 的表格组件是非常常用的组件之一,但有时候我们需要对表格的头部样式进行一些自定义,让它更符合我们设计的需求。下面是 Ant Design Vue 修改表格头部样式的攻略: 修改表格头部背…

    css 2023年6月10日
    00
  • css3+贝塞尔曲线实现可伸缩input搜索框效果

    让我来详细介绍一下“CSS3+贝塞尔曲线实现可伸缩input搜索框效果”的完整攻略。 1. 贝塞尔曲线 在介绍实现搜索框效果之前,我们先来了解一下贝塞尔曲线。 贝塞尔曲线是计算机图形学中广泛使用的一种数学工具,可以通过控制点和曲线的阶数来生成平滑的曲线。 在实现搜索框效果时,我们可以使用贝塞尔曲线来实现输入框的可伸缩效果。 2. 实现搜索框效果 实现搜索框伸…

    css 2023年6月10日
    00
  • CSS div布局需要注意的两点

    当我们使用 CSS 进行页面布局时, div 元素是最基础的组件之一。在使用 div 元素进行页面布局时,有一些细节是需要特别注意的,下面就来讲解一下 CSS div 布局需要注意的两点。 1. 容器元素要清除浮动 在布局中使用浮动效果是非常常见的,但在某些情况下,浮动可能导致容器无法自适应子元素高度的情况。若父容器出现了这样的情况,通常会导致布局错乱,无法…

    css 2023年6月10日
    00
  • 表格边框以虚线显示的css样式

    要让表格边框以虚线显示,可以通过CSS样式进行控制。 一种方式是通过设置border-style属性为dashed或者dotted来使表格边框呈现虚线的样式,同时设置border-width属性来控制边框宽度,示例如下: table { border-collapse: collapse; } td, th { border: 1px dashed #ccc…

    css 2023年6月10日
    00
  • 进一步理解CSS编程中的块级元素和行内元素

    下面是针对“进一步理解CSS编程中的块级元素和行内元素”的完整攻略。 什么是块级元素和行内元素 在 HTML 中,文本和其他元素被定义为块级元素或行内元素。块级元素以新行开始,可以容纳其他块级元素和行内元素,而行内元素则不能容纳块级元素,一般只能容纳文本或其他行内元素。它们的差异主要在于渲染后的表现形式和默认属性。 块级元素 常见的块级元素有<div&…

    css 2023年6月10日
    00
  • CSS中的font-size属性使用教程

    下面是关于“CSS中的font-size属性使用教程”的详细攻略。 1. font-size属性概述 CSS的font-size属性用于设置网页上文字的大小。它支持以下几种单位: px: 像素单位,表示实际的像素点大小。 em: 相对长度单位,基于当前字体大小计算。比如如果当前字体大小是16px,1em就等于16px。 rem: 相对长度单位,基于根元素即H…

    css 2023年6月9日
    00
  • 基于jquery实现百度新闻导航菜单滑动动画

    以下是基于jQuery实现百度新闻导航菜单滑动动画的攻略: 一、设计导航菜单结构 首先,需要在HTML中设计出导航菜单的结构。具体而言,我们需要使用HTML <ul> 与 <li> 标签来实现导航菜单,并设置相应样式。 示例代码: <ul class="nav-menu"> <li class=&…

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