Javascript查看大图功能代码实现

下面是“Javascript查看大图功能代码实现”的详细攻略:

1. HTML结构

首先需要在HTML中创建一个图片列表的结构,例如:

 <ul class="picture-list">
     <li>
         <img src="1.jpg" alt="图片1">
     </li>
     <li>
         <img src="2.jpg" alt="图片2">
     </li>
     <li>
         <img src="3.jpg" alt="图片3">
     </li>
 </ul>

2. CSS样式

然后需要写一些CSS样式,使得图片列表可以有一定的布局和样式。例如:

ul.picture-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.picture-list li {
  display: inline-block;
  margin-right: 10px;
  margin-bottom: 10px;
  position: relative;
}

.picture-list li img {
  width: 200px;
  height: auto;
  display: block;
  cursor: pointer;
}

3. Javascript代码

最后需要编写Javascript的代码,实现点击小图查看大图的功能。具体实现方式如下:

Step1. 获取图片列表

首先需要获取图片列表,以便于后面为每一张小图添加点击事件。可以用document.querySelector()方法或document.querySelectorAll()方法获取图片列表,例如:

const pictureList = document.querySelectorAll('.picture-list li img');

Step2. 遍历图片列表并为每一张小图添加点击事件

接下来需要遍历图片列表,为每一张小图添加点击事件。当用户点击小图时,应该显示出对应的大图。

为了实现这个功能,我们可以使用JS创建一个DOM节点,用于显示大图。当用户点击小图时,我们再根据点击的小图的src属性,在大图容器中显示其对应的大图。具体实现示例代码如下所示:

function showBigPicture(imgSrc) {
  var bigPicture = document.createElement('div');
  var innerHtml = `<div class="big-picture-wrapper"> 
    <div class="big-picture-header"><span class="close-btn">&times;</span></div>
     <div class="big-picture-content">
        <img src="${imgSrc}"/>
     </div>
   </div>`;
  bigPicture.innerHTML = innerHtml;
  document.body.appendChild(bigPicture);

  const closeBtn = document.querySelector('.close-btn');
  closeBtn.addEventListener('click', function () {
    bigPicture.parentNode.removeChild(bigPicture);
  });
}

Step3. 处理小图的点击事件

我们可以使用addEventListener()方法为小图添加点击事件,例如:

pictureList.forEach(function (item) {
  item.addEventListener('click', function () {
    showBigPicture(this.src);
  });
});

完整代码及示例可见下方代码块:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Javascript查看大图功能代码实现</title>
  <style>
    ul.picture-list {
      list-style: none;
      margin: 0;
      padding: 0;
    }

    .picture-list li {
      display: inline-block;
      margin-right: 10px;
      margin-bottom: 10px;
      position: relative;
    }

    .picture-list li img {
      width: 200px;
      height: auto;
      display: block;
      cursor: pointer;
    }

    .big-picture-wrapper {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.8);
      z-index: 999;
      display: flex;
      justify-content: center;
      align-items: center
    }

    .big-picture-header {
      position: absolute;
      top: 10px;
      right: 10px;
    }

    .big-picture-header .close-btn {
      font-size: 30px;
      color: white;
      cursor: pointer;
    }

    .big-picture-content img {
      max-width: 100%;
      max-height: 100%;
      display: block;
      margin: auto;
    }
  </style>
</head>

<body>
  <ul class="picture-list">
    <li>
      <img src="https://picsum.photos/id/232/200/300" alt="图片1">
    </li>
    <li>
      <img src="https://picsum.photos/id/237/200/300" alt="图片2">
    </li>
    <li>
      <img src="https://picsum.photos/id/277/200/300" alt="图片3">
    </li>
  </ul>

  <script>
    function showBigPicture(imgSrc) {
      var bigPicture = document.createElement('div');
      var innerHtml = `<div class="big-picture-wrapper"> 
        <div class="big-picture-header"><span class="close-btn">&times;</span></div>
         <div class="big-picture-content">
            <img src="${imgSrc}"/>
         </div>
       </div>`;
      bigPicture.innerHTML = innerHtml;
      document.body.appendChild(bigPicture);

      const closeBtn = document.querySelector('.close-btn');
      closeBtn.addEventListener('click', function () {
        bigPicture.parentNode.removeChild(bigPicture);
      });
    }

    const pictureList = document.querySelectorAll('.picture-list li img');
    pictureList.forEach(function (item) {
      item.addEventListener('click', function () {
        showBigPicture(this.src);
      });
    });
  </script>
</body>

</html>

希望这份攻略能够对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript查看大图功能代码实现 - Python技术站

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

相关文章

  • 两种方法实现用CSS切割图片只取图片中一部分

    下面我将为您详细讲解如何使用 CSS 切割图片只取图片中一部分的两种方法。 方法一:使用 background-position 该方法使用 CSS 的 background-position 属性来设置背景图片在元素中的位置,并通过控制元素的宽高来削减背景图片的展示区域。具体步骤如下: 将要切割的图片作为 CSS 的背景,设置在元素的 background…

    css 2023年6月10日
    00
  • jquery tools系列 expose 学习

    jQuery Tools系列之Exposure学习攻略 Exposure是jQuery Tools插件系列中一个非常实用的插件。它能帮助我们以非常简单、优美的方式展示一个弹出式的遮罩层,以实现各种场景下的交互。 资源准备 为了开始学习Exposure,我们需要先准备一些资源: jQuery:Exposure依赖于jQuery库,所以我们需要先引入jQuery…

    css 2023年6月10日
    00
  • JS瀑布流实现方法实例分析

    JS瀑布流实现方法实例分析 瀑布流布局是一种常用的网页布局方式,具有美观简洁、适合显示大量图片等特点。本文将详细讲解如何使用JavaScript实现瀑布流布局。 实现原理 瀑布流布局的实现原理主要有两点: 以列为单位,每一列假设有相同的宽度,每个元素按照顺序依次放置在各列中,列的高度不断变化; 元素的位置需要经过计算,如果某个元素的位置高度最小,就将该元素放…

    css 2023年6月10日
    00
  • elementui源码学习仿写el-link示例详解

    首先,elementui源码学习仿写示例可以帮助我们更好地了解elementui组件库的内部实现,提高自己的前端开发技能。其中,el-link组件是一个非常简单的组件,我们可以通过仿写这个组件的代码来更好地理解elementui组件的设计思路。 下面是仿写el-link组件的详细攻略: 首先,在elementui源码中找到el-link组件的代码,这个代码位…

    css 2023年6月10日
    00
  • jquery选择器之基本过滤选择器详解

    jQuery选择器之基本过滤选择器详解 在jQuery中,选择器是最常用的语法之一。过滤选择器可以对选择器的结果集进行过滤,从而更加专业地选择自己需要的元素,提高代码的灵活性。本篇攻略将详细讲解基本过滤选择器。 1. :first选择器 该选择器选取所选元素的第一个元素。 注意::frist(1)和:eq(0)是等价的,但:first与:first-chil…

    css 2023年6月10日
    00
  • jValidate 基于jQuery的表单验证插件

    jValidate是一款基于jQuery的表单验证插件,它可以轻松地实现表单的前端验证功能。下面是jValidate的完整攻略,包含使用步骤、API说明、示例说明等等。 步骤一:引入jValidate 首先需要在你的HTML文件中引入jQuery和jValidate插件。 <script src="https://cdn.bootcdn.ne…

    css 2023年6月10日
    00
  • H5手机端多文件上传预览插件

    H5手机端多文件上传预览插件可以方便地用于网站或应用的图片上传功能。下面是使用该插件的完整攻略: 1. 下载和引入插件文件 该插件可以在Github上下载。下载完成后,将jquery.uploader.js和jquery.uploader.css文件复制到项目中,并在HTML文件中引入这两个文件。 2. 编写HTML代码 在HTML代码中,需要添加一个文件上…

    css 2023年6月10日
    00
  • 单元素利用css实现多重边框效果示例代码

    下面是关于单元素利用CSS实现多重边框的攻略。 理解多重边框的概念 多重边框是指在一个元素的边缘上不止是一条描边线。在Web开发中,我们可以使用多重边框来增强网页的视觉效果。多重边框有许多种实现方式,其中一种是使用CSS的box-shadow属性。 使用box-shadow来实现多重边框 我们可以使用box-shadow属性来实现多重边框的效果。box-sh…

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