📅  最后修改于: 2023-12-03 15:08:20.024000             🧑  作者: Mango
有时候我们需要在网页中实现一些弹框、提示框等浮层效果,我们希望在弹出浮层后,在其周围区域添加一些遮罩效果,从而使弹出的浮层更加明显。本文将介绍如何使用 JavaScript 实现这一效果。
本文所述的“除固定区域以外的整个屏幕”指的是当前浏览器窗口的可视区域,而不是整个网页文档区域。
首先,我们需要创建一个遮罩层,它的样式为绝对定位(position: absolute),宽高为整个屏幕的宽高。然后,我们将其放置在 body 元素的内部,但在我们要固定的区域之后的位置。最后,我们将其显示出来,并且设置其背景色为半透明黑色,以达到遮罩效果。
.mask {
position: absolute;
z-index: 999;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
}
<div class="mask" style="display: none;"></div>
var mask = document.querySelector('.mask');
mask.style.display = 'block';
var fixedArea = document.querySelector('#fixed-area');
fixedArea.parentNode.insertBefore(mask, fixedArea.nextSibling);
完整的代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Mask Demo</title>
<style>
.mask {
position: absolute;
z-index: 999;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
}
</style>
</head>
<body>
<div id="fixed-area" style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);">This is a fixed area</div>
<div class="mask" style="display: none;"></div>
<script>
var mask = document.querySelector('.mask');
mask.style.display = 'block';
var fixedArea = document.querySelector('#fixed-area');
fixedArea.parentNode.insertBefore(mask, fixedArea.nextSibling);
</script>
</body>
</html>
效果如下图所示:
本文介绍了如何使用 JavaScript 使除固定区域以外的整个屏幕变暗。具体实现思路是创建一个遮罩层,将其放置在 body 元素的内部,但在我们要固定的区域之后的位置,然后显示出来。通过以上步骤,我们可以轻松实现遮罩效果。