JS+CSS实现Div弹出窗口同时背景变暗的方法

实现Div弹出窗口同时背景变暗的方法,通常涉及到以下几个步骤:

1.创建一个基本结构的HTML文件,其中包含一个触发窗口的按钮和一个用于显示弹窗的DIV元素。

<!DOCTYPE html>
<html>
<head>
    <title>弹出窗口示例</title>
    <!-- 在<head>标签中引入CSS文件 -->
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <button id="openBtn">点击弹出窗口</button>
    <div id="modal" class="modal">
        <div class="modal-content">
            <h2>这是一个弹出窗口</h2>
            <p>点击窗口外面的区域或者“关闭按钮”可以关闭窗口</p>
            <button id="closeBtn">关闭</button>
        </div>
    </div>

    <!-- 在<body>标签中引入JS文件 -->
    <script type="text/javascript" src="script.js"></script>
</body>
</html>

2.创建一个CSS文件,用于设置样式,其中包括弹出窗口和背景遮罩层的样式。

/* 弹出窗口 */
.modal {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    opacity: 0;
    visibility: hidden;
    -webkit-transition: opacity 0.3s ease;
    -moz-transition: opacity 0.3s ease;
    -ms-transition: opacity 0.3s ease;
    -o-transition: opacity 0.3s ease;
    transition: opacity 0.3s ease;
    z-index: 1;
}
.modal-content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: #fff;
    padding: 20px;
    text-align: center;
    border-radius: 5px;
    box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5);
    z-index: 2;
}
.modal.show {
    opacity: 1;
    visibility: visible;
}

/* 背景遮罩层 */
.modal-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1;
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s ease;
}

.modal-backdrop.show {
    opacity: 1;
    visibility: visible;
}

3.创建一个JavaScript文件,用于控制窗口的显示和隐藏,并且在显示窗口时为页面添加背景遮罩层。

var modal = document.getElementById('modal');
var closeBtn = document.getElementById('closeBtn');
var openBtn = document.getElementById('openBtn');
var backdrop = document.createElement('div');
backdrop.className = 'modal-backdrop';

function openModal() {
    backdrop.classList.add('show');
    modal.classList.add('show');
}

function closeModal() {
    backdrop.classList.remove('show');
    modal.classList.remove('show');
}

openBtn.addEventListener('click', openModal);
closeBtn.addEventListener('click', closeModal);
backdrop.addEventListener('click', closeModal);

document.body.appendChild(backdrop);

4.将以上三个文件在同一目录下并且在html中引入后,即可调用依然实现该效果。

示例一

HTML文件:

<!DOCTYPE html>
<html>
<head>
    <title>弹出窗口示例</title>
    <!-- 在<head>标签中引入CSS文件 -->
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <button id="openBtn">点击弹出窗口</button>
    <div id="modal" class="modal">
        <div class="modal-content">
            <h2>这是一个弹出窗口</h2>
            <p>点击窗口外面的区域或者“关闭按钮”可以关闭窗口</p>
            <button id="closeBtn">关闭</button>
        </div>
    </div>

    <!-- 在<body>标签中引入JS文件 -->
    <script type="text/javascript" src="script.js"></script>
</body>
</html>

CSS文件:

/* 弹出窗口 */
.modal {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    opacity: 0;
    visibility: hidden;
    -webkit-transition: opacity 0.3s ease;
    -moz-transition: opacity 0.3s ease;
    -ms-transition: opacity 0.3s ease;
    -o-transition: opacity 0.3s ease;
    transition: opacity 0.3s ease;
    z-index: 1;
}
.modal-content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: #fff;
    padding: 20px;
    text-align: center;
    border-radius: 5px;
    box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5);
    z-index: 2;
}
.modal.show {
    opacity: 1;
    visibility: visible;
}

/* 背景遮罩层 */
.modal-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1;
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s ease;
}

.modal-backdrop.show {
    opacity: 1;
    visibility: visible;
}

JS文件:

var modal = document.getElementById('modal');
var closeBtn = document.getElementById('closeBtn');
var openBtn = document.getElementById('openBtn');
var backdrop = document.createElement('div');
backdrop.className = 'modal-backdrop';

function openModal() {
    backdrop.classList.add('show');
    modal.classList.add('show');
}

function closeModal() {
    backdrop.classList.remove('show');
    modal.classList.remove('show');
}

openBtn.addEventListener('click', openModal);
closeBtn.addEventListener('click', closeModal);
backdrop.addEventListener('click', closeModal);

document.body.appendChild(backdrop);

示例二

HTML文件:

<!DOCTYPE html>
<html>
<head>
    <title>弹出窗口示例</title>
    <!-- 在<head>标签中引入CSS文件 -->
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <button id="openBtn">点击弹出窗口</button>
    <div id="modal" class="modal">
        <div class="modal-content">
            <h2>这是一个弹出窗口</h2>
            <p>点击窗口外面的区域或者“关闭按钮”可以关闭窗口</p>
            <button id="closeBtn">关闭</button>
        </div>
    </div>

    <!-- 在<body>标签中引入JS文件 -->
    <script type="text/javascript" src="script.js"></script>
</body>
</html>

CSS文件:

/* 弹出窗口 */
.modal {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    opacity: 0;
    visibility: hidden;
    -webkit-transition: opacity 0.3s ease;
    -moz-transition: opacity 0.3s ease;
    -ms-transition: opacity 0.3s ease;
    -o-transition: opacity 0.3s ease;
    transition: opacity 0.3s ease;
    z-index: 1;
}
.modal-content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: #fff;
    padding: 20px;
    text-align: center;
    border-radius: 5px;
    box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5);
    z-index: 2;
}
.modal.show {
    opacity: 1;
    visibility: visible;
}

/* 背景遮罩层 */
.modal-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1;
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s ease;
}

.modal-backdrop.show {
    opacity: 1;
    visibility: visible;
}

JS文件:

var modal = document.getElementById('modal');
var closeBtn = document.getElementById('closeBtn');
var openBtn = document.getElementById('openBtn');
var backdrop = document.createElement('div');
backdrop.className = 'modal-backdrop';

function openModal() {
    backdrop.classList.add('show');
    modal.classList.add('show');
}

function closeModal() {
    backdrop.classList.remove('show');
    modal.classList.remove('show');
}

openBtn.addEventListener('click', openModal);
closeBtn.addEventListener('click', closeModal);
backdrop.addEventListener('click', closeModal);

document.body.appendChild(backdrop);

这两个示例都显示相似的弹出窗口,但是您可以根据自己的需求更改它们的外观和行为。这只是一个基本的模板,需您自行改进。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS+CSS实现Div弹出窗口同时背景变暗的方法 - Python技术站

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

相关文章

  • CSS行为expression轻松实现IE6无抖动固定定位

    首先需要解释一下什么是“抖动”,在IE6中固定定位会产生抖动现象,即元素不停地抖动,这是因为固定定位对渲染引擎的计算依赖于元素的宽高以及位置等,当元素的宽高和位置变化时,渲染引擎需要重新计算,从而导致不停抖动。 而解决这个问题的一个方案是使用CSS行为expression,通过JS代码直接在CSS中计算元素的位置、宽高等属性,从而避免抖动现象的发生。 下面是…

    css 2023年6月9日
    00
  • 像素密度与CSS3的viewport在移动端Web响应式布局中的运用

    一、像素密度与CSS3的viewport在移动端Web响应式布局中的运用 在移动端Web响应式布局中,屏幕大小与分辨率是非常重要的概念。其中像素密度(Pixel Density)就是指屏幕上每英寸所包含的像素数,通常也称为“PPI”(Pixels Per Inch)。而对于响应式布局,实现元素的自动适配和缩放则需要依靠CSS3的viewport视口概念。 C…

    css 2023年6月10日
    00
  • CSS3实现DIV圆角效果完整代码

    下面我将详细讲解“CSS3实现DIV圆角效果完整代码”的完整攻略。 一、什么是DIV圆角效果? DIV圆角效果是指将DIV元素的角落部分变为圆形或半圆形的效果。在网页设计中,DIV圆角效果常常被用作页面的美化和排版,能够使网页看起来更加优雅和舒适。 二、CSS3实现DIV圆角效果的完整代码 在CSS3中,我们可以使用border-radius属性来实现DIV…

    css 2023年6月10日
    00
  • 超级好用的jQuery圆角插件 Corner速成

    超级好用的jQuery圆角插件 Corner速成 简介 Corner是一个超级好用的jQuery圆角插件,可以帮助我们快速地实现各种圆角效果,支持自定义圆角半径、边框宽度和颜色等。 安装 可以通过以下两种方式安装Corner插件: 手动下载Corner的源代码文件,并将其引入到HTML文档中: “`html “` 使用CDN引入Corner: “`ht…

    css 2023年6月10日
    00
  • CSS3模拟IOS滑动开关效果

    关于“CSS3模拟iOS滑动开关效果”的攻略,我将按照以下几个方面进行详细的讲解: 基本思路:通过CSS3实现拖拽交互,并根据滑动距离判断滑块当前状态,进而控制滑块颜色、背景等样式,实现类似于iOS系统中的滑动开关的效果。 具体实现步骤:(1)HTML结构定义 <div class="ios-switch"> <inpu…

    css 2023年6月10日
    00
  • CSS中使用大于号[>]的含义及使用示例

    下面是关于“CSS中使用大于号[>]的含义及使用示例”的详细讲解。 什么是大于号[>]? 大于号[>]是CSS中的选择器,用于选择某个元素的子元素。它的含义是“选取下一级元素”,只选择该元素的直接子元素,而不选取后代元素。 如何在CSS中使用大于号[>]? 在CSS中使用大于号[>]的语法为: 父元素 > 子元素 { 属性…

    css 2023年6月9日
    00
  • jquery tools系列 expose 学习

    jQuery Tools系列之Exposure学习攻略 Exposure是jQuery Tools插件系列中一个非常实用的插件。它能帮助我们以非常简单、优美的方式展示一个弹出式的遮罩层,以实现各种场景下的交互。 资源准备 为了开始学习Exposure,我们需要先准备一些资源: jQuery:Exposure依赖于jQuery库,所以我们需要先引入jQuery…

    css 2023年6月10日
    00
  • 浏览器兼容之旅第四站:IE常见Bug总结及修复方法—part2

    浏览器兼容之旅第四站:IE常见Bug总结及修复方法—part2 在我们进行网页开发过程中,兼容不同浏览器是非常重要的一个环节。在IE浏览器中,常常有一些烦人的兼容性bug,比如布局错位、样式渲染问题、JavaScript兼容性等,需要我们针对性地去解决。本文将对IE浏览器常见Bug进行总结,并提供相关修复方法。 第一部分:Table布局问题 问题描述 在IE…

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