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日

相关文章

  • 浮动的div自适应居中显示的js代码

    首先要明确的是,实现“浮动的div自适应居中显示”的效果有多种方法,其中一种是使用JavaScript计算浮动div的位置并修改CSS样式来实现。下面是一个实现该效果的完整攻略,包含两个示例说明。 一、理解问题 首先,我们要清楚如何定义“浮动的div自适应居中显示”。具体来说,它应该符合以下要求: div元素是浮动的,也就是说它将脱离文档流并且没有固定位置。…

    css 2023年6月10日
    00
  • 布局用CSS+DIV的优点总结

    布局用CSS+DIV的优点总结: 分离内容和展示 使用CSS样式表和HTML标记语言,相当于将前端逻辑和后端逻辑分离开来,使得页面清晰易懂,更便于代码维护。 支持可访问性 相比使用表格(table)和iframe,使用DIV+CSS可以更好地支持可访问性,并能够更好地适应改变的页面要求。 加载速度快 DIV+CSS布局使得代码更加简洁,标签更少,CSS样式则…

    css 2023年6月10日
    00
  • 学习Xhtml+CSS2的一些心得体会

    学习XHTML+CSS2的一些心得体会 学习XHTML+CSS2的前置条件 在学习XHTML+CSS2之前,需要先了解HTML和CSS的基础知识。HTML是网页的基础语言,而CSS是网页样式的描述语言。如果没有HTML和CSS的基础,学习XHTML+CSS2会比较困难。 掌握XHTML+CSS2的基本语法 XHTML+CSS2的语法相对HTML和CSS来说更…

    css 2023年6月10日
    00
  • 纯CSS实现导航栏下划线跟随滑动效果

    下面是“纯CSS实现导航栏下划线跟随滑动效果”的完整攻略: 理解需求 首先,我们需要理解需求,即导航栏下划线跟随滑动效果的实现。通常情况下,我们会在网站的顶部或页面的一侧添加一个导航栏,让用户可以方便地浏览网站的主要内容。为了让用户更加直观地了解当前页面所在的位置,我们可以在导航栏下方添加一个下划线,用来标识当前所在的页面。 而跟随滑动效果,则是指当用户从一…

    css 2023年6月10日
    00
  • HTML中head头结构

    HTML中的 <head> 字段通常包含了网页的元信息和其他非可视元素。下面是完整攻略的细节。 head头 HTML的 <head> 位于文档的头部,在文档中只能包含一个 <head> 标记。 <head> 标签不会被浏览器显示在页面上,它通常包含了页面的元信息和其他非可视元素。 title <head&…

    css 2023年6月10日
    00
  • JS读写CSS样式的方法汇总

    首先,我们需要了解JS读写CSS样式的相关知识。在HTML中,可以通过内嵌样式或外联样式表来设置页面的样式。而JS可以通过一些方法来读取或修改这些样式。 一、读取CSS样式 1.1 获取样式值 可以通过style对象或window.getComputedStyle()方法来获取元素的样式值。其中,style对象只能获取内嵌样式,而window.getComp…

    css 2023年6月9日
    00
  • jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例

    当我们需要在网页上展示一些数据时,常用的方式之一就是使用HTML中的table标签,但是如果表格中的数据较多,为了阅读方便往往需要隔行变色以及高亮显示当前选择的行。jQuery提供了很好的解决方案,下面我将详细讲解如何实现这些效果。 1. 隔行变色 要实现隔行变色的效果,我们可以使用jQuery的选择器来筛选需要被改变颜色的行,然后使用jQuery提供的cs…

    css 2023年6月10日
    00
  • SpringBoot+Vue开发之Login校验规则、实现登录和重置事件

    我来简单地讲解一下”SpringBoot+Vue开发之Login校验规则、实现登录和重置事件”的攻略。 1. Login校验规则 在前端表单中实现登录功能时,需要考虑以下几个方面的校验规则: 账号不能为空,且长度不应该超过某个特定值 密码不能为空,且长度不应该超过某个特定值 根据用户输入的账号和密码向后端发送请求,验证其是否正确 在具体实现当中,可以使用Vu…

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