当前位置:首页 > 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实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

jquery 效果

jquery 效果

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。jQuery 提供了丰富的效果(Effects)功能,可以轻松实现元素的动态显…

vue实现翻页效果

vue实现翻页效果

使用Vue实现翻页效果 在Vue中实现翻页效果通常需要结合分页组件和数据处理逻辑。以下是几种常见方法: 基础分页组件实现 <template> <div> <…

vue实现效果展示

vue实现效果展示

Vue 实现效果展示的方法 Vue.js 提供了多种方式来实现动态效果展示,以下是一些常见的方法: 使用 Vue 的过渡和动画系统 Vue 内置了 <transition> 和 <…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…