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

下面我将为您详细讲解 "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日

相关文章

  • CSS 日期垂直排列的两种技巧

    当我们在网页设计中需要展示日期时,可能会遇到日期的垂直排列问题,本文将会讲解CSS的两种技巧可以解决这个问题。 技巧一:使用flexbox布局 使用flexbox布局可以在垂直方向上轻松的实现日期的垂直排列。我们可以将日期元素放在一个父元素中,设置父元素为flex布局,并将flex-direction设置为column(默认为row,即横向排列)。这种方式非…

    css 2023年6月9日
    00
  • css 获取从第n个开始之后的所有元素

    要在CSS中获取从第n个开始之后的所有元素,可以使用CSS的伪类选择器:nth-child()。:nth-child()可以根据元素在其父元素中的位置进行选择。 首先,要获取从第n个开始的所有元素,需要将:nth-child()的参数设置为从第n个元素开始。例如,要选择从第3个元素开始的所有元素,可以使用:nth-child(n+3)。 然后,要选择从第n个…

    css 2023年6月10日
    00
  • 如何去掉内联样式 通过style属性定义的(element.style)

    如何去掉使用style属性定义的内联样式是前端开发中一个常见需求。以下是完整的攻略: 1. 使用JavaScript 在JavaScript中可以通过使用element.style来获取到元素的内联样式。我们可以使用element.style.property = ”来清空某一属性的内联样式。 示例1:清空段落元素P的背景颜色样式: let p = doc…

    css 2023年6月9日
    00
  • css教程:选择合适的、有意义的元素描述内容

    选择合适的、有意义的元素描述内容是CSS在前端开发中的重要指导原则之一。简单来说,就是在HTML代码中选择合适的HTML元素,并使用CSS对其进行样式修饰,从而让页面结构更加清晰、易读、易维护。下面是详细的攻略: 1. 选择合适的HTML元素 在HTML中,我们可以利用各种标签来描述网页的结构和内容,如 、 、 、 等。选择合适的HTML元素可以提高页面的可…

    css 2023年6月10日
    00
  • js实现rem自动匹配计算font-size的示例

    JS实现REM自动匹配计算FontSize主要涉及以下步骤: 在<head>标签中,添加一个<style>标签,用于设置根元素的默认font-size大小,例如: <style> html { font-size: 16px; } </style> 在JS中,使用如下代码监听窗口大小的变化,并在变化时重新计算f…

    css 2023年6月11日
    00
  • HTML元素拖拽功能实现的完整实例

    当用户需要将网页上的某一个元素从它原来的位置拖到另一个位置时,我们可以使用HTML元素的拖拽(drag and drop)功能来实现。以下是实现HTML元素拖拽功能的完整攻略。 拖拽功能实现流程 给需要拖拽的元素添加 draggable 属性,并设置为 true。 为该元素添加 dragstart 事件监听器,以在用户开始拖拽该元素时触发相应事件处理函数。 …

    css 2023年6月10日
    00
  • XML入门的常见问题(二)

    下面是针对“XML入门的常见问题(二)”的完整攻略: 1. 什么是XML Schema? XML Schema 是一种描述 XML 文件的结构和内容的语言,它主要用于检查和验证 XML 的有效性,并支持更加严格和灵活的数据校验。 XML Schema 不同于 DTD,它可以定义更多的数据类型和结构类型,更加灵活和强大,但语法复杂。 2. 如何使用XML Sc…

    css 2023年6月9日
    00
  • 网页使用Google Font API(字体)的方法

    下面是“网页使用Google Font API(字体)的方法”的完整攻略。 网页使用Google Font API(字体)的方法 简介 Google Font API 是谷歌提供的免费字体库,它可以让网站在不需要用户安装字体文件的情况下,使用各种风格和字重的自定义字体。 步骤 1. 在网页代码中添加引用 在你的网页代码中添加如下代码,调用Google Fon…

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