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 3D转换

    CSS 3D转换是一种通过CSS来实现立体效果的技术,它可以实现物体在浏览器内的三维展示,并可以进行旋转、平移、缩放等操作。下面是CSS 3D转换的完整攻略和代码示例。 3D转换的基本属性 3D转换的基本属性包括transform、transform-style、perspective和perspective-origin。 transform:用于定义对象…

    Web开发基础 2023年3月30日
    00
  • 详解CSS文件的三种引入方式

    下面是详解CSS文件的三种引入方式的完整攻略: 1. 外部样式表 使用外部样式表是把CSS规则写在一个独立的外部文件中,然后在HTML文件中通过\元素来引用。这种方式具有以下优点:- 可以将CSS样式从HTML文档中分离出来,降低文档复杂度,方便管理和维护。- 外部文件可以被多个HTML页面引用,可以有效地减少页面体积和提高重复利用率。 外部样式表的语法如下…

    css 2023年6月9日
    00
  • 利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)

    下面是利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)的完整攻略。 准备工作 首先,我们需要创建一个HTML文件,并链接上CSS和JS文件。其中,CSS文件用于样式的设置,JS文件用于实现页面的动态效果和交互逻辑。 <!DOCTYPE html> <html> <head> <meta char…

    css 2023年6月9日
    00
  • ie6,ie7,firefox的textarea滚动条、边框

    针对IE6、IE7和Firefox浏览器中TextArea滚动条和边框样式的问题,我们可以通过CSS来进行样式的设置和处理。 IE6、IE7浏览器中TextArea滚动条和边框样式的设置方法 在IE6、IE7浏览器中,TextArea默认的滚动条和边框样式是比较简单的,一般不太符合我们的需求。我们可以使用CSS来设置相关的样式。 设置滚动条样式 针对IE6、…

    css 2023年6月10日
    00
  • HTML table鼠标拖拽排序功能

    下面是关于”HTML table鼠标拖拽排序功能”的完整攻略。 一、原理说明 在HTML表格中添加鼠标拖拽排序功能,本质上是通过监听鼠标在表格中的操作事件,动态调整表格中行或列的位置。 其中,主要的步骤可以分为以下几点: 监听鼠标操作事件,包括鼠标按下、鼠标移动、鼠标松开等事件; 在鼠标按下时,记录当前鼠标所在行或列的位置信息,包括其所在的表格、行或列号,以…

    css 2023年6月10日
    00
  • Vue实现Tab标签路由效果并用Animate.css做转场动画效果的代码第1/3页

    下面是关于“Vue实现Tab标签路由效果并用Animate.css做转场动画效果的代码”攻略的详细讲解: 1. 准备工作 在开始之前,我们需要先准备好一些必要的工作: 确认使用的Vue项目已经基于Vue-cli完成了初始化 安装Vue-router和Animate.css npm install vue-router –save npm install a…

    css 2023年6月10日
    00
  • CSS 制作波浪效果的思路

    CSS 制作波浪效果是一项常用的技巧,它可以让页面更加生动活泼。在这里,我将详细介绍 CSS 制作波浪效果的思路。 1. 了解波浪效果的基本原理 在 CSS 中制作波浪效果,我们需要了解其基本原理。波浪效果其实是通过正弦函数的周期性变化来实现的。即我们需要通过正弦函数设定一个变化周期和振幅来实现波浪的起伏效果。 2. 利用伪元素生成基本波浪形状 利用 CSS…

    css 2023年6月11日
    00
  • ibm官方资料把应用程序从 Internet Explorer 迁移到 Mozilla第2/2页

    以下是“ibm官方资料把应用程序从 Internet Explorer 迁移到 Mozilla”的完整攻略: 将应用程序从 Internet Explorer 迁移到 Mozilla 介绍 在将应用程序从Internet Explorer迁移到Mozilla浏览器时,需要注意以下事项: 兼容性: 需要确保应用程序能够在Mozilla浏览器中正常工作。 测试:…

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