jquery实现的缩略图预览滑块实例

下面我将详细讲解如何使用 jQuery 实现缩略图预览滑块的效果:

前置准备

在开始实现缩略图预览滑块之前,需要先引入 jQuery 库,可以通过以下方式进行引入:

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

HTML 结构

缩略图预览滑块的 HTML 结构需要包含一个大图容器和一个缩略图容器。具体结构如下:

<div class="slider-container">
  <div class="slider-large-img">
    <!-- 大图容器 -->
    <img src="large-image.jpg" alt="">
  </div>
  <div class="slider-thumb">
    <!-- 缩略图容器 -->
    <ul>
      <li><img src="thumb1.jpg" alt=""></li>
      <li><img src="thumb2.jpg" alt=""></li>
      <li><img src="thumb3.jpg" alt=""></li>
      <li><img src="thumb4.jpg" alt=""></li>
    </ul>
  </div>
</div>

CSS 样式

需要对大图容器和缩略图容器进行样式设置,使其水平排列,具体 CSS 代码如下:

.slider-container {
  display: flex;
}

.slider-large-img,
.slider-thumb {
  flex: 1;
}

.slider-thumb {
  overflow-x: auto;
  white-space: nowrap;
}

.slider-thumb ul {
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
}

.slider-thumb li {
  margin: 0 5px;
}

.slider-thumb img {
  display: block;
  width: 100px;
  height: 60px;
  object-fit: cover;
  cursor: pointer;
}

.slider-large-img img {
  width: 100%;
  height: auto;
}

JavaScript 实现

步骤一:点击缩略图切换大图

在缩略图容器中的图片被点击时,应该获取到该图片对应的大图路径,并将大图容器中的图片的 src 属性设置为该路径,实现大图的切换。代码如下:

var thumbs = $('.slider-thumb img'); // 获取所有缩略图图片

thumbs.on('click', function() {
  var src = $(this).attr('src'); // 获取点击图片的路径
  $('.slider-large-img img').attr('src', src); // 设置大图路径
});

步骤二:缩略图容器添加滑动条

如果缩略图容器中的图片数量很多,而容器又不够大,就需要添加滑动条,让用户可以滑动查看所有的缩略图。这里可以使用 jQuery 的 scrollLeft 方法实现。

首先,需要在 CSS 中将缩略图容器的 overflow-x 属性设置为 auto,以使得它具有滚动条。

.slider-thumb {
  overflow-x: auto;
}

然后,在上面缩略图点击事件的回调函数中加入如下代码,计算出当前选中的缩略图在容器中的位置,然后将容器的 scrollLeft 属性设置为该位置,以使其自动滚动:

var thumbIndex = thumbs.index(this); // 获取当前点击缩略图的索引
var thumbWidth = thumbs.outerWidth(true); // 获取每个缩略图的宽度(包括 margin)
var thumbMarginLeft = parseInt(thumbs.eq(thumbIndex).css('marginLeft')); // 获取当前点击的缩略图的 marginLeft 值

// 计算出当前点击缩略图在容器中的位置
var thumbPos = thumbIndex * (thumbWidth + thumbMarginLeft); 

$('.slider-thumb').animate({
  'scrollLeft': thumbPos // 滚动到当前点击缩略图的位置
}, 300);

示例说明

示例一:使用 fadeInfadeOut 动画效果

在切换大图时,可以使用 jQuery 提供的 fadeInfadeOut 动画效果,使切换更加平滑。具体代码如下:

thumbs.on('click', function() {
  var $largeImg = $('.slider-large-img img');
  var src = $(this).attr('src');

  $largeImg.fadeOut(200, function() { // 淡出效果
    $largeImg.attr('src', src).fadeIn(200); // 淡入效果
  });
});

示例二:添加懒加载功能

如果缩略图数量很多,加载所有的缩略图可能会导致页面加载速度缓慢,这时候可以使用懒加载技术,只加载当前显示范围内的缩略图。

具体实现方法是,在页面加载完成时,初始化所有的缩略图都使用一个占位图片,等到用户将缩略图容器滚动到该图片之前时,再将该图片替换成真实的缩略图。具体代码如下:

var placeholder = 'https://via.placeholder.com/120x90'; // 占位图片地址

// 初始化所有缩略图都使用占位图片
thumbs.attr('src', placeholder);

$('.slider-thumb').scroll(function() { // 监听滚动事件
  var scrollPos = $(this).scrollLeft(); // 获取当前缩略图容器滚动的位置

  thumbs.each(function() { // 遍历所有的缩略图
    var $this = $(this);
    var imgPos = $this.offset().left; // 获取当前缩略图的位置
    var imgWidth = $this.outerWidth(true); // 获取当前缩略图的宽度(包括 margin)

    if (imgPos < scrollPos + imgWidth && $this.attr('src') === placeholder) { // 判断当前缩略图是否需要加载
      $this.attr('src', $this.data('src')); // 将占位图片替换成真实的缩略图
    }
  });
});

// 将所有缩略图的真实路径保存在 data-src 属性中
thumbs.each(function() {
  var $this = $(this);
  $this.data('src', $this.attr('src'));
  $this.attr('src', placeholder);
});

上述代码使用 jQuery 的 offset 方法获取了每个缩略图在页面中的位置,然后通过计算得出当前容器显示范围内的所有缩略图,将对应的占位图片替换为真实的缩略图。同时,在将所有的缩略图都使用占位图片初始化时,使用了 jQuery 的 data 方法将缩略图的真实路径保存在了 data-src 属性中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery实现的缩略图预览滑块实例 - Python技术站

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

相关文章

  • css小技巧汇总

    本人将为您详细介绍CSS小技巧的攻略。 一、CSS小技巧介绍 CSS小技巧是指在编写CSS时运用不同的技巧,实现不同的布局效果或者优化页面加载速度等方面的小技巧。 二、CSS小技巧合集 1. 使用box-sizing减少布局计算 box-sizing用于设置元素的盒模型。默认为content-box,即content的值不包含元素的padding和borde…

    css 2023年6月9日
    00
  • php版本CKEditor 4和CKFinder安装及配置方法图文教程

    下面是“php版本CKEditor 4和CKFinder安装及配置方法图文教程”的完整攻略: 1. 下载CKEditor和CKFinder 首先,在CKEditor官网下载CKEditor 4最新版本。在CKFinder官网下载对应版本的CKFinder。 2. 安装CKEditor 将下载好的CKEditor压缩包解压到你的web服务器目录下,例如 www…

    css 2023年6月10日
    00
  • alt属性和title属性

    我来详细讲解一下“alt属性和title属性”的完整攻略。 什么是alt属性和title属性? 在HTML中,图片是通过标签来插入的。其中,图片不能够像文字那样直接传达信息,所以需要使用alt属性和title属性来描述图片。通过这两种属性,用户可以更好的了解图片的内容,也可以帮助屏幕阅读器等工具更好的解读图片。 alt属性 alt属性是用于描述图片的,当图片…

    css 2023年6月10日
    00
  • 微信小程序 图片宽高自适应详解

    微信小程序图片宽高自适应详解 背景 在微信小程序开发中,图片是重要的元素之一。然而,由于图片在不同设备上的宽度和高度不同,如何让图片自适应不同的设备变得十分重要。本攻略将详细讲解微信小程序中如何实现图片宽高自适应。 使用 wx.getImageInfo 获取图片信息 为了让图片自适应,在小程序中必须获取图片的信息,包括图片的宽度和高度。可以通过调用 wx.g…

    css 2023年6月10日
    00
  • CSS制作梦幻彩虹效果

    CSS制作梦幻彩虹效果攻略 在Web开发中,梦幻彩虹效果是一种非常炫酷的效果,可以为网页增添一份活力和趣味性。本攻略将详细讲解如何使用CSS制作梦幻彩虹效果,包括线性渐变和径向渐变两种实现方法。 1. 线性渐变实现方法 1.1. 使用background-image属性实现线性渐变 使用background-image属性可以很方便地实现线性渐变。例如: d…

    css 2023年5月18日
    00
  • 网页选项卡TAB设计原则和应用案例教程

    让我为你详细讲解“网页选项卡TAB设计原则和应用案例教程”的完整攻略。 什么是网页选项卡? 网页选项卡是指在网页界面中,通过选项卡的方式来切换不同的内容,通常会放置在页面的顶部或左侧。在页面内容较多时,选项卡可以让用户快速找到所需的信息,提供更好的视觉体验。 网页选项卡的设计原则 选项卡的数量要尽可能少,最好不超过5个,以免让用户感到困惑。 选项卡的名称应该…

    css 2023年6月10日
    00
  • js实现仿百度瀑布流的方法

    下面是实现仿百度瀑布流的方法的完整攻略,主要包括以下步骤: 步骤一:添加HTML结构和CSS样式 首先需要在HTML中添加列表结构,以及定义每个元素的CSS样式。通常瀑布流等容器都是由 div 元素嵌套而成: <div class="waterfall"> <div class="item">&…

    css 2023年6月11日
    00
  • 深入解析HTML的table表格标签与相关的换行问题

    当我们使用HTML来制作表格时,table标签是必不可少的。在table标签中,我们可以使用tr标签来表示一行,td标签来表示单元格。但是在实际使用中,还存在一些与换行相关的问题。 换行问题的背景 当我们使用HTML来制作表格时,表格中的内容可能会超过单元格的宽度,因此会自动换行。但是,如果我们希望在单元格内手动控制换行,该怎么办呢? 问题的解决 使用br标…

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