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语法结构的详细讲解,希望能够帮到您。 CSS语法结构 CSS是一种用于描述网页上样式和布局的语言。它使用一种名为“CSS规则”的结构来定义样式。每个CSS规则由选择器和一组声明块组成。 CSS规则的基本结构 一个典型的CSS规则由三部分组成: selector { property: value; } 其中,selector表示一组元素需要设…

    css 2023年6月9日
    00
  • JavaScript 实现锅拍灰太狼小游戏

    下面我将详细讲解“JavaScript 实现锅拍灰太狼小游戏”的完整攻略。 整体思路 实现锅拍灰太狼小游戏主要涉及到以下几个方面: HTML 页面布局:包括游戏背景、灰太狼、砖头、锅等元素的布置。 CSS 样式设计:主要调整游戏元素的显示效果,增强游戏的用户体验。 JavaScript 交互逻辑实现:主要实现游戏开始、结束、得分、击打灰太狼等基本功能。 接下…

    css 2023年6月10日
    00
  • 通过绝对定位实现div重叠实例代码

    通过绝对定位实现div重叠是常见的Web前端技术之一,它可以帮助我们实现一些比较特殊的布局效果。下面分享一下通过绝对定位实现div重叠的完整攻略。 步骤一:设置父元素 首先,需要在HTML中定义一个父元素,用来包裹多个需要重叠的子元素。父元素的样式应该是相对定位(position: relative),这样我们才能在其内部定义绝对定位的子元素。 示例代码: …

    css 2023年6月10日
    00
  • 全面解析Bootstrap图片轮播效果

    接下来我会详细讲解“全面解析Bootstrap图片轮播效果”的完整攻略。该攻略将涵盖以下内容: 简介和安装:Bootstrap图片轮播效果是一个常用的网站轮播图片的方式,本文将向您介绍该效果的基本知识和安装步骤。 基本结构:Bootstrap图片轮播效果的基本结构包含三个部分:轮播容器、轮播图片和轮播控制器,本文将对其进行详细介绍。 实现方法:有多种方法可以…

    css 2023年6月10日
    00
  • 基于javascript的无缝滚动动画1

    下面是基于 javascript 的无缝滚动动画攻略: 1、需求分析 首先,我们需要明确我们要做的是一个无缝滚动的动画效果。该效果可以让用户通过鼠标滑轮或手势轻松地左右滑动页面,并且当滑动到页面边缘时会循环滚动,保证用户可以持续无感知地查看页面内容。 2、技术实现 实现无缝滚动的动画效果,可以使用以下技术来完成: 2.1 CSS3动画 可以使用 CSS3 的…

    css 2023年6月10日
    00
  • html页面高度不固定在不同浏览器下的兼容性设置

    为了确保 HTML 页面在不同浏览器中显示效果一致,需要设置 HTML 页面的高度和宽度。HTML 表示网页的结构,CSS 用于表现网页的样式和布局,在设置页面高度的时候需要关注以下几点: 设置HTML和body标签的高度都为100% html, body { height: 100%; } 设置包含页面的容器的高度 如果网页的内容放在一个固定大小的容器中,…

    css 2023年6月10日
    00
  • css3动画过渡实现鼠标跟随导航效果

    让我来详细讲解一下“css3动画过渡实现鼠标跟随导航效果”的完整攻略。 1. 确认需求和基本思路 鼠标跟随导航的基本要求是:鼠标移动时导航标签会随着鼠标移动而移动,形成视觉上的鼠标跟随效果。 实现这个效果的思路大概可以分为以下几个步骤: 利用CSS3动画特性实现导航标签颜色变化的过渡效果; 利用JavaScript事件监听机制实现鼠标移动事件的监听,并根据鼠…

    css 2023年6月10日
    00
  • CSS 关于浮动

    CSS 关于浮动的完整攻略 CSS浮动是一种常用的布局方式,它可以让元素脱离文档流并向左或向右浮动,从而实现多列布局、文字环绕图片等效果。本攻略将详细讲解CSS浮动的相关知识点,包括浮动的基本概念、浮动的属性、浮动的清除方法等,并提供两个示例说明。 1. 浮动的基本概念 浮动是CSS中的一种布局方式,它可以让元素脱离文档流并向左或向右浮动。浮动元素会尽可能地…

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