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渲染速度改善的十个方法与建议 CSS是网页开发中必不可少的一部分,但是当网页中使用了大量的CSS样式时,渲染速度会变得非常慢,影响用户的使用体验。本文将介绍CSS渲染速度改善的十个方法与建议,帮助网页开发者提升用户体验。 1. 避免使用 @import 在CSS中使用@import规则会导致外部文件的全部内容被下载并解析,因此会降低网页的加载速度。建议…

    css 2023年6月10日
    00
  • 如何实现div 图片在DIV内水平居中

    如何实现div图像在div内水平居中有几种方法:使用text-align:center和display:flex;justify-content:center;两种方法。 使用text-align:center实现div图像在div内水平居中 可以通过以下步骤实现: 为包含图片的div元素设置布局方式(display)为block或者inline-block…

    css 2023年6月9日
    00
  • 详解iOS webview加载时序和缓存问题总结

    详解iOS WebView加载时序和缓存问题总结 简介 本文主要介绍iOS系统中WebView的加载时序、缓存机制及相关问题的总结。 WebView加载时序 WebView的加载时序可以分为以下几个阶段: 发起请求:调用WebView加载网页时,首先会发起一个HTTP请求。 解析HTML:WebView接收到HTTP响应后,会将HTML解析成DOM树和CSS…

    css 2023年6月10日
    00
  • 如何让PHP编码更加好看利于阅读

    让我们来详细讲解如何让PHP编码更加好看、利于阅读的攻略。一个好的编码风格不只能让代码更加易读易懂,还能提高代码的可维护性、可扩展性等方面。 1. 代码缩进 对于PHP代码,缩进是非常重要的,这样可以让代码的层次结构更加明显,易于阅读。通常来说,一般采用 4 个空格作为缩进方式,这个可以在编辑器中进行设置。 示例代码: function fetch_data…

    css 2023年6月10日
    00
  • 基于jQuery实现的无刷新表格分页实例

    下面就是“基于jQuery实现的无刷新表格分页实例”的完整攻略: 1. 实现原理 1.1 分页原理 在实现无刷新表格分页前,我们需要了解分页原理。分页是指将一个数据集按照固定大小分成若干页的过程,每页显示一定行数的数据。分页常用于数据量较大的情况下,可以降低页面加载时间和服务器压力,提高用户体验。在实现分页时,我们需要知道当前页码和每页显示的数据条数,从而计…

    css 2023年6月10日
    00
  • 详解CSS盒子塌陷的5种解决方法

    详解CSS盒子塌陷的5种解决方法 在CSS布局过程中,经常会遇到盒子塌陷的问题。盒子塌陷是指由于子元素的高度和父级元素的高度不同,导致父级元素高度无法撑起子元素的情况。 盒子塌陷的原因 盒子塌陷的原因主要有两种: 浮动元素未清除浮动,导致父级元素不包含浮动元素。 父级元素设置了固定高度或最小高度,导致高度无法自适应。 解决方法 方法一:清除浮动 清除浮动可通…

    css 2023年6月10日
    00
  • JavaScript实现简易聊天对话框(加滚动条)

    下面是JavaScript实现简易聊天对话框(加滚动条)的完整攻略。 简介 这个项目的目标是实现一个简易的聊天对话框,用户可以在对话框内输入消息,同时页面支持滚动条。 准备工作 首先,我们需要准备一个HTML模板和CSS文件,用于布局和样式调整。模板如下: <!DOCTYPE html> <html lang="en"&…

    css 2023年6月10日
    00
  • 深入学习CSS中如何使用定位(小结)

    以下是“深入学习CSS中如何使用定位(小结)”的完整攻略: 深入学习CSS中如何使用定位 在 CSS 中,定位可以帮助用户更好地控制元素的位置和布局。以下是一些常见的定位属性和用法。 position 属性 position 属性用于指定元素的定位方式,常见的取值有 static、relative、absolute 和 fixed。以下是一个示例: div …

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