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布局中的Position了解程度有多少

    我非常了解CSS布局中的Position,它是CSS布局的重要组成部分,可以帮助我们精确地定位HTML元素的位置。 在CSS中,Position属性用于指定HTML元素在文档中的定位方式。常见的Position值有static、relative、absolute和fixed。其中,static是元素默认的定位方式,relative是相对于元素自身原来的位置进…

    css 2023年6月9日
    00
  • css relative相对定位的top值在不同浏览器中使用js获取的差异

    针对这个问题,我会分别从CSS相对定位中的top属性以及获取top属性的方式在不同浏览器中遇到的问题进行说明。 CSS相对定位中top属性获取的差异 在CSS中,relative相对定位是指元素按照通常所在位置相对移动。相对移动的距离可以通过top、bottom、left、right四个属性进行控制。其中,top属性定义了一个元素上边缘相对于其包含元素上边缘…

    css 2023年6月9日
    00
  • jQuery实现的背景颜色渐变动画效果示例

    下面我将详细讲解“jQuery实现的背景颜色渐变动画效果示例”的完整攻略。 简介 jQuery是一个流行的JavaScript库,它提供了许多方便的功能和方法,可以帮助我们更加轻松地操作页面元素。其中包括对背景颜色渐变的支持。我们可以使用jQuery实现非常漂亮的背景颜色渐变动画效果,给用户一种非常视觉冲击的感受。 示例1 下面是一个简单的示例,展示如何使用…

    css 2023年6月11日
    00
  • 详解CSS中的选择器优先级及样式层叠问题解决

    详解CSS中的选择器优先级及样式层叠问题解决 什么是选择器优先级 在CSS中,通过选择器来选择元素并对其应用样式。但是,当存在多个选择器作用于同一个元素时,就会涉及到选择器的优先级问题。选择器优先级指的是在多个选择器作用于同一元素时,浏览器根据不同选择器的权重来决定哪个样式最后会被应用。 通常,一个规则的选择器包含多个简单选择器,权值的计算方法如下: 按照 …

    css 2023年6月9日
    00
  • CSS3 对过渡(transition)进行调速以及延时

    CSS3 提供了对过渡(transition)进行调速以及延时的功能,使元素的动画效果更加流畅和自然。在进行过渡调速以及延时时,需要借助两个 CSS 属性:transition-timing-function 和 transition-delay。 transition-timing-function transition-timing-function 用…

    css 2023年6月10日
    00
  • css textarea 高度自适应,无滚动条

    要实现CSS textarea的高度自适应且无滚动条,需要结合CSS的resize属性和JavaScript的代码实现。 1. 使用CSS的resize属性 CSS有一个resize属性,它可以定义元素是否可以被用户缩放,同时也能控制textarea的高度是否可以自适应。我们可以将resize属性应用到textarea元素上,并设置为vertical(垂直方…

    css 2023年6月10日
    00
  • jquery实现的随机多彩tag标签随机颜色和字号大小效果

    首先,我们需要了解什么是jQuery。jQuery是一种流行的JavaScript库,它可以使在网页上运行的JavaScript代码更加容易和简单。它提供了一系列便捷的API来操作HTML、CSS和DOM等内容,同时具备跨浏览器兼容性、高效性等优点。 针对“jquery实现的随机多彩tag标签随机颜色和字号大小效果”,我们可以采取以下步骤: 1. 创建一个H…

    css 2023年6月9日
    00
  • DW2017图片文字怎么并排排列? HTML图片/文字并排排列代码写法

    HTML中实现图片和文字并排排列可以使用CSS中的浮动和内联块(inline-block)属性。以下是两条示例代码: 示例一:使用浮动实现图片和文字并排排列 <div style="overflow: hidden;"> <img src="https://example.com/image.jpg"…

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