JavaScript编写点击查看大图的页面半透明遮罩层效果实例

yizhihongxing

下面我将为您详细讲解 "JavaScript编写点击查看大图的页面半透明遮罩层效果实例" 的完整攻略。

1. 确定遮罩层的基本样式

首先,我们需要确定遮罩层的样式,在遮罩层上添加半透明的背景,以及相对定位使其覆盖整个页面。

.overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 9999;
  display: none; /*默认隐藏*/
}

2. 给点击事件添加遮罩层显示效果

其次,我们需要编写JavaScript代码来实现点击事件触发遮罩层的显示,以及显示对应的大图。

const overlay = document.querySelector('.overlay');
const imgLinks = document.querySelectorAll('.img-link');
const imgContainer = document.querySelector('.img-container');
const largeImg = document.querySelector('.large-img');

imgLinks.forEach(imgLink => {
  imgLink.addEventListener('click', e => {
    e.preventDefault(); // 阻止默认行为,避免打开链接
    const imgUrl = imgLink.href;
    largeImg.src = imgUrl;
    overlay.style.display = 'block';
    imgContainer.style.display = 'block';
  });
});

overlay.addEventListener('click', e => {
  if (e.target === overlay) {
    overlay.style.display = 'none';
    imgContainer.style.display = 'none';
  }
});

代码解释:

  • const overlay = document.querySelector('.overlay');:获取遮罩层元素
  • const imgLinks = document.querySelectorAll('.img-link');:获取所有包含大图的链接
  • const imgContainer = document.querySelector('.img-container');:获取展示大图的容器
  • const largeImg = document.querySelector('.large-img');:获取用于展示大图的<img>元素
  • e.preventDefault();:阻止点击链接后默认打开链接
  • largeImg.src = imgUrl;:将大图链接赋值给<img>元素的src属性
  • overlay.style.display = 'block';imgContainer.style.display = 'block';:显示遮罩层和展示大图的容器
  • if (e.target === overlay):当点击遮罩层的区域时,隐藏遮罩层以及容器。

示例说明

示例一

假设我们有如下 HTML 结构:

<div class="gallery">
  <a href="image1.jpg" class="img-link"><img src="image1-small.jpg" alt="小图1"></a>
  <a href="image2.jpg" class="img-link"><img src="image2-small.jpg" alt="小图2"></a>
  <a href="image3.jpg" class="img-link"><img src="image3-small.jpg" alt="小图3"></a>
</div>

<div class="overlay">
  <div class="img-container">
    <img class="large-img" src="" alt="大图">
  </div>
</div>

我们通过 querySelectorAll 获取所有 img-link 元素和大图容器和大图元素,然后遍历每个 img-link 元素添加点击事件,当点击时做如下处理:

imgLinks.forEach(imgLink => {
  imgLink.addEventListener('click', e => {
    e.preventDefault(); // 阻止默认行为,避免打开链接
    const imgUrl = imgLink.href;
    largeImg.src = imgUrl;
    overlay.style.display = 'block';
    imgContainer.style.display = 'block';
  });
});

这里我们获取了当前点击元素的 href 属性,然后将其设置为大图元素的 src 属性,修改遮罩层和大图容器的样式实现显示。

示例二

再来看一个实际的例子,假设我们的网站页面上有一些图片需要点击查看大图,但我们希望在加载大图时添加一个旋转图标以提示用户正在加载。我们可以通过添加一个 HTML 元素来实现这个效果。

我们修改下 HTML 结构:

<div class="gallery">
  <a href="image1.jpg" class="img-link" data-large-img="image1-large.jpg"><img src="image1-small.jpg" alt="小图1"></a>
  <a href="image2.jpg" class="img-link" data-large-img="image2-large.jpg"><img src="image2-small.jpg" alt="小图2"></a>
  <a href="image3.jpg" class="img-link" data-large-img="image3-large.jpg"><img src="image3-small.jpg" alt="小图3"></a>
</div>

<div class="overlay">
  <div class="loading"></div>
  <div class="img-container">
    <img class="large-img" src="" alt="大图">
  </div>
</div>
  • 我们在每个 img-link 元素添加了自定义属性 data-large-img,用来存储大图的链接。
  • 添加了一个 loading 元素,用来展示加载大图时的旋转图标。

然后我们对 JavaScript 代码进行修改:

const overlay = document.querySelector('.overlay');
const imgLinks = document.querySelectorAll('.img-link');
const imgContainer = document.querySelector('.img-container');
const largeImg = document.querySelector('.large-img');
const loading = document.querySelector('.loading');

imgLinks.forEach(imgLink => {
  imgLink.addEventListener('click', e => {
    e.preventDefault(); // 阻止默认行为,避免打开链接
    const imgUrl = imgLink.dataset.largeImg;
    largeImg.src = '';
    loading.style.display = 'block';
    overlay.style.display = 'block';
    imgContainer.style.display = 'block';
    const img = new Image();
    img.src = imgUrl;
    img.onload = () => {
      largeImg.src = imgUrl;
      loading.style.display = 'none';
      imgContainer.style.display = 'block';
    };
  });
});

overlay.addEventListener('click', e => {
  if (e.target === overlay) {
    overlay.style.display = 'none';
    imgContainer.style.display = 'none';
  }
});

修改后我们将大图的链接从 img-link 元素的 href 属性转移到了自定义属性 data-large-img 中,而将 href 用于阻止默认打开链接的行为。为了实现展示加载大图时的旋转图标,我们在遮罩层中添加了 loading 元素,当用户点击展示大图的链接时,我们将 loading 显示,并且将大图容器的 display 属性设置为 none 隐藏,等待大图加载完成。完成后我们将隐藏 loading,显示大图容器并展示大图。

结论

通过以上代码示例分析,我们可以得知如何通过JavaScript编写点击查看大图的页面半透明遮罩层效果实例。通过掌握下述技巧,你可以更好地实现页面效果。

  • 确定遮罩层样式
  • 给点击事件添加遮罩层显示效果

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript编写点击查看大图的页面半透明遮罩层效果实例 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 15个开发者必须知道的chrome技巧

    15个开发者必须知道的Chrome技巧 Google Chrome是最受欢迎的浏览器之一,尤其对于开发者而言更是如此。下面是15个Chrome技巧,可以极大提高开发者的工作效率和生产力: 1. 勾选”disable cache” 在开发阶段,为了避免缓存干扰,开发者通常需要刷新页面来看效果。打开控制台,选中”disable cache”,可以禁止掉浏览器的缓…

    css 2023年6月11日
    00
  • html/css基础篇——html代码编写过程中的几个警惕点(必看)

    下面是“html/css基础篇——html代码编写过程中的几个警惕点(必看)”的完整攻略: HTML代码编写过程中的几个警惕点 1. 缩进格式 在编写HTML代码时,我们需要按照一定的缩进格式来区分不同的标签和标签内的内容。这不仅有利于代码的阅读和修改,也可以提高代码的可维护性。 示例: <!DOCTYPE html> <html> …

    css 2023年6月9日
    00
  • Dreamweaver怎么创建CSS样式? dw插入css的教程

    以下是关于“Dreamweaver怎么创建CSS样式? DW插入CSS的教程”的完整攻略,包含两个示例说明。 方法一:使用CSS面板创建样式 可以使用Dreamweaver的CSS面板来创建样式。可以按照以下步骤操作: 打开Dreamweaver,并打开要编辑的HTML文件。 单击窗口菜单中的“CSS”选项,以打开CSS面板。 单击CSS面板中的“新样式”按…

    css 2023年5月18日
    00
  • 使用CSS3在触屏上为按钮实现激活效果

    下面我将针对如何使用CSS3在触屏上为按钮实现激活效果进行完整攻略: 1. CSS3 在触屏上实现激活效果简介 在移动端网页设计中,为按钮添加激活效果是非常重要的,因为它可以提高用户交互的体验,帮助用户更好地操作页面。另外,这也是一个比较常见的网页设计需求,因此我们要掌握如何用 CSS3 实现触屏按钮激活效果。 2. 实现按钮的激活效果 我们可以使用 :ac…

    css 2023年6月10日
    00
  • 使用Loader.css和css-spinners来制作加载动画的方法

    制作加载动画是很多网站开发者必须面对的一个问题。Loader.css和css-spinners是两个可以用于制作加载动画的CSS库。下面是使用这两个库制作加载动画的完整攻略。 步骤1:引入CSS库文件 首先,我们需要将Loader.css和css-spinners的CSS文件引入到HTML文件中: <link rel="stylesheet&…

    css 2023年6月9日
    00
  • 编写跨浏览器兼容的 CSS 代码

    编写跨浏览器兼容的 CSS 代码可以帮助我们在不同的浏览器中呈现出一致的样式效果,同时避免一些不必要的错误和问题。下面是我提供的编写跨浏览器兼容的 CSS 代码的完整攻略: 1. 确定目标浏览器 在编写跨浏览器兼容的 CSS 的时候,首先需要确定目标浏览器。为了让样式在大多数浏览器中都呈现出一致的效果,建议我们优先考虑主流浏览器,比如 Chrome、Fire…

    css 2023年6月9日
    00
  • css按坐标取背景图示例代码

    下面就详细讲解一下“CSS按坐标取背景图示例代码”的攻略。 什么是按坐标取背景图? 按坐标取背景图就是从一张大背景图中,通过CSS样式取出背景图中的一个小块。常见的应用场景是利用一张大图,按照需求不同的坐标,显示出不同的图案或区域。 实现方法 CSS的background-position属性可以让我们非常方便地实现按坐标取背景图。该属性用于设置背景图片的起…

    css 2023年6月9日
    00
  • 一步一步教你写带图片注释的淡入淡出插件(四)

    本文主要讲解如何编写一个带有图片注释的淡入淡出插件,一步一步地实现它。这是第四篇文章,下面我将详细介绍实现该插件所需的步骤。 步骤1:编写HTML结构 首先,我们需要编写HTML结构。在HTML中,我们需要一个父容器和多个子容器,每个子容器都包含一张图片和对应的注释。代码如下: <!– 父容器 –> <div class="f…

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