jquery制作居中遮罩层效果分享


创建一个使用jQuery实现居中遮罩层效果的基本示例,你可以参考以下HTML和jQuery代码。这个示例会展示如何在页面上添加一个居中的遮罩层,遮罩层通常用于显示加载动画、模态框等内容。

### HTML


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>居中遮罩层效果</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jquery-ui-dist/jquery-ui.min.css">
<style>
  .overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    display: none;
    justify-content: center;
    align-items: center;
  }
  
  .modal {
    background-color: #fff;
    padding: 20px;
    border-radius: 5px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    width: 300px;
    text-align: center;
  }
</style>
</head>
<body>

<button id="showModal">显示遮罩层</button>

<div class="overlay" id="overlay">
  <div class="modal">
    <p>这是一个居中的遮罩层!</p>
    <button id="closeModal">关闭</button>
  </div>
</div>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
  $(document).ready(function() {
    $('#showModal').click(function() {
      $('#overlay').fadeIn(300);
    });

    $('#closeModal').click(function() {
      $('#overlay').fadeOut(300);
    });

    // 点击遮罩层外部也关闭遮罩层
    $('.overlay').click(function(e) {
      if (e.target == this) {
        $('#overlay').fadeOut(300);
      }
    });

    // 阻止点击遮罩层时关闭模态框(如果点击了模态框内的内容)
    $('.modal').click(function(e) {
      e.stopPropagation();
    });
  });
</script>

</body>
</html>

### 解释

1. **HTML结构**:包含了一个按钮来触发遮罩层的显示,以及一个隐藏的遮罩层(`.overlay`)和内部的模态框(`.modal`)。

2. **CSS样式**:`.overlay` 设置了全屏的固定定位背景色,并初始化为不显示(`display: none`)。`.modal` 设置了基本的样式,如背景色、内边距、边框半径和阴影。

3. **jQuery脚本**:

- 当点击 `#showModal` 按钮时,`.overlay` 遮罩层使用 `fadeIn` 方法淡入显示。

- 当点击 `#closeModal` 按钮或遮罩层自身(但不包括模态框内的内容)时,遮罩层使用 `fadeOut` 方法淡出隐藏。

- 使用 `e.stopPropagation()` 阻止点击模态框时触发遮罩层的点击事件,从而避免不小心关闭遮罩层。

这个示例展示了如何使用jQuery和CSS来创建一个简单的居中遮罩层效果。你可以根据需要调整样式和功能。