当前位置:首页 > JavaScript

js实现遮罩效果

2026-04-04 05:39:17JavaScript

使用CSS和JavaScript实现遮罩效果

通过CSS定义一个遮罩层样式,通常设置为半透明黑色背景,覆盖整个视口:

.mask {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 1000;
  display: none;
}

基础遮罩实现

创建遮罩元素并添加到DOM中:

js实现遮罩效果

const mask = document.createElement('div');
mask.className = 'mask';
document.body.appendChild(mask);

// 显示遮罩
function showMask() {
  mask.style.display = 'block';
}

// 隐藏遮罩
function hideMask() {
  mask.style.display = 'none';
}

带内容框的遮罩

在遮罩层中添加内容容器:

.modal-content {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: white;
  padding: 20px;
  z-index: 1001;
}
const modal = document.createElement('div');
modal.className = 'modal-content';
modal.innerHTML = '<p>这是弹窗内容</p><button class="close-btn">关闭</button>';
document.body.appendChild(modal);

document.querySelector('.close-btn').addEventListener('click', hideMask);

function showMask() {
  mask.style.display = 'block';
  modal.style.display = 'block';
}

function hideMask() {
  mask.style.display = 'none';
  modal.style.display = 'none';
}

点击遮罩关闭功能

为遮罩添加点击事件,点击时关闭:

js实现遮罩效果

mask.addEventListener('click', function(e) {
  if (e.target === mask) {
    hideMask();
  }
});

动画效果增强

添加CSS过渡效果使显示更平滑:

.mask {
  opacity: 0;
  transition: opacity 0.3s ease;
}

.mask.show {
  opacity: 1;
}

.modal-content {
  opacity: 0;
  transform: translate(-50%, -45%);
  transition: all 0.3s ease;
}

.modal-content.show {
  opacity: 1;
  transform: translate(-50%, -50%);
}
function showMask() {
  mask.classList.add('show');
  modal.classList.add('show');
  mask.style.display = 'block';
  modal.style.display = 'block';
}

function hideMask() {
  mask.classList.remove('show');
  modal.classList.remove('show');
  setTimeout(() => {
    mask.style.display = 'none';
    modal.style.display = 'none';
  }, 300);
}

防止背景滚动

显示遮罩时禁止页面滚动:

function showMask() {
  document.body.style.overflow = 'hidden';
  // 其他显示逻辑...
}

function hideMask() {
  document.body.style.overflow = '';
  // 其他隐藏逻辑...
}

标签: 效果js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现滚动条效果

js实现滚动条效果

实现滚动条效果的方法 使用原生JavaScript实现滚动条 通过监听滚动事件,可以动态调整滚动条的位置和样式。以下是一个基础实现示例: // 获取DOM元素 const container = d…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…