javascript实现点击图片切换功能

下面是详细讲解“JavaScript实现点击图片切换功能”的完整攻略。

1、HTML结构

如下所示的HTML结构中,我们将用JavaScript来实现当用户点击左侧的小图时,右侧显示对应的大图。

<div>
  <div class="thumbnails">
    <img src="small-1.jpg" alt="small-1">
    <img src="small-2.jpg" alt="small-2">
    <img src="small-3.jpg" alt="small-3">
    <img src="small-4.jpg" alt="small-4">
    <img src="small-5.jpg" alt="small-5">
  </div>
  <div class="viewer">
    <img src="large-default.jpg" alt="large-default">
  </div>
</div>

2、CSS样式

我们需要用CSS来设置一些样式,让页面呈现我们期望的形态。下面是一个简单的CSS,你可以选择按照自己的喜好进行修改。

.thumbnails {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.thumbnails img {
  width: 100px;
  height: 100px;
  object-fit: cover;
  cursor: pointer;
}

.viewer img {
  width: 100%;
}

3、JavaScript实现

目前为止,页面的结构和样式我们都设置好了,接下来我们要用JavaScript来实现点击图片切换的功能。

首先,我们需要选中HTML中的元素。我们可以使用querySelector方法来选中元素。

let thumbnailImgs = document.querySelectorAll('.thumbnails img');
let viewerImg = document.querySelector('.viewer img');

然后,我们需要遍历所有小图,为它们分别添加点击事件。当小图被点击时,大图的src属性应该被修改为对应的src

thumbnailImgs.forEach(thumbnailImg => {
  thumbnailImg.addEventListener('click', function() {
    viewerImg.src = this.src.replace('small', 'large');
  });
});

这里使用了replace方法将小图的文件名替换为大图的文件名。当然,为了实现这一点,我们假设小图和大图的文件名都是相同的,只是大小不同。如果这个假设不成立,那我们就需要另寻他法了。

至此,我们已经完成了JavaScript代码的编写。完整代码如下:

let thumbnailImgs = document.querySelectorAll('.thumbnails img');
let viewerImg = document.querySelector('.viewer img');

thumbnailImgs.forEach(thumbnailImg => {
  thumbnailImg.addEventListener('click', function() {
    viewerImg.src = this.src.replace('small', 'large');
  });
});

4、示例说明

下面,我提供两个不同的示例,帮助你更好地理解这个功能。

第一个示例是使用未压缩的图片。在这个示例中,我们可以清晰地看到图片切换的效果。

<div>
  <div class="thumbnails">
    <img src="https://via.placeholder.com/100x100.png?text=Small%201" alt="small-1">
    <img src="https://via.placeholder.com/100x100.png?text=Small%202" alt="small-2">
    <img src="https://via.placeholder.com/100x100.png?text=Small%203" alt="small-3">
    <img src="https://via.placeholder.com/100x100.png?text=Small%204" alt="small-4">
    <img src="https://via.placeholder.com/100x100.png?text=Small%205" alt="small-5">
  </div>
  <div class="viewer">
    <img src="https://via.placeholder.com/500x500.png?text=Large%20Default" alt="large-default">
  </div>
</div>

第二个示例是使用压缩过的图片。在这个示例中,我们可以测试在图片大小较大或网络环境较差的情况下,图片切换的效果。

<div>
  <div class="thumbnails">
    <img src="https://via.placeholder.com/100x100.png?text=Small%201" alt="small-1">
    <img src="https://via.placeholder.com/100x100.png?text=Small%202" alt="small-2">
    <img src="https://via.placeholder.com/100x100.png?text=Small%203" alt="small-3">
    <img src="https://via.placeholder.com/100x100.png?text=Small%204" alt="small-4">
    <img src="https://via.placeholder.com/100x100.png?text=Small%205" alt="small-5">
  </div>
  <div class="viewer">
    <img src="https://via.placeholder.com/500x500.png?text=Large%20Default&compress=true" alt="large-default">
  </div>
</div>

以上就是完整的攻略了。希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript实现点击图片切换功能 - Python技术站

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

相关文章

  • 原生JavaScript实现瀑布流布局

    原生Javascript实现瀑布流布局可以分为以下几个步骤: 步骤一:布局基础准备 定义要展示的图片或者内容容器的宽度,以便计算列数和每一列的宽度 获取当前容器中的所有子元素 定义一个数组存放每一列的高度 步骤二:计算列数和每一列的宽度 计算容器的宽度与每个子元素的宽度相除,取整,得到列数 根据列数,计算每一列的宽度,即容器宽度/列数 步骤三:遍历每个子元素…

    css 2023年6月10日
    00
  • 如何使用CSS3和JQuery easing 插件制作绚丽菜单

    制作绚丽菜单是Web设计中常见的一个需求,而CSS3和JQuery easing插件提供了丰富的动画效果来实现这一目的。下面便将详细讲解如何使用CSS3和JQuery easing插件制作绚丽菜单。 1. 选用样式和插件 首先,我们需要选用可供选择的样式和插件去展示菜单效果。可以选择多种CSS样式和JQuery插件,如Animate.css、Hover.cs…

    css 2023年6月9日
    00
  • HTML5中的Scoped属性使用实例

    下面我将详细讲解一下“HTML5中的Scoped属性使用实例”的完整攻略。 简介 scoped属性是HTML5中<style>标签新增的一个属性,表示该样式仅在当前标签内生效。它的使用可以很方便地实现针对特定元素的样式控制。 语法 scoped属性没有取值,只需要在<style>标签中添加该属性即可,例如: <style sco…

    css 2023年6月10日
    00
  • javascript 线性渐变二

    JavaScript 线性渐变二是指在网页中通过 JavaScript 实现颜色渐变的效果,可以沿着任意角度的线性轨迹进行颜色渐变的过程。以下是实现该效果的完整攻略: 步骤一:准备画布 在 HTML 页面中先准备一个画布,例如: <canvas id="gradientCanvas" width="500" he…

    css 2023年6月11日
    00
  • css中引入指定字体@font-face兼容各浏览器的问题

    在 CSS 中引入指定字体 @font-face 兼容各浏览器的问题,主要需要考虑以下几个方面: 字体格式问题 字体路径问题 兼容性问题 下面分别对这些问题进行详细讲解。 1. 字体格式问题 当我们在 CSS 中引入指定字体时,需要注意字体格式,不同的浏览器支持的字体格式也不同。常用的字体格式有: @font-face { font-family: ‘MyF…

    css 2023年6月9日
    00
  • CSS 透明度属性

    CSS 透明度属性是一种用于设置HTML网页元素的不透明程度的属性。下面是关于CSS透明度属性的完整攻略。 什么是CSS透明度属性 CSS透明度属性(opacity)是一种用于控制HTML元素的透明度的属性。它可以使元素变得半透明或完全透明。 CSS透明度属性的值可以是0到1之间的数字,其中0表示完全透明,1表示完全不透明。例如,设置元素的透明度为0.5将使…

    css 2023年6月10日
    00
  • 利用Bootstrap Multiselect实现下拉框多选功能

    下面我将提供一份完整的攻略,讲解如何利用Bootstrap Multiselect实现下拉框多选功能。 步骤一:准备工作 首先,我们需要在网站的HTML页面中引入以下资源: <!– 引入 样式 –> <link rel="stylesheet" href="https://cdn.jsdelivr.net/…

    css 2023年6月9日
    00
  • CSS制作框架 Sass 3.4.4 今日发布

    CSS制作框架Sass 3.4.4今日发布,这是一个非常值得关注的新版本。Sass 是一款流行的 CSS 预处理器。Sass 为 CSS 添加了许多高级特性,例如嵌套规则、变量、mixin 以及向导使用。 Sass 3.4.4 主要改进 Sass 3.4.4 版本是对 3.4 版本的补丁,主要改进包括: 修复了多个 bug。 修复了 Linux 下部分命令失…

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