【Swiper】轮播图 笔记

文章目录

    • 场景
    • 代码(6.8.4)
    • 代码(11.1.4)

场景

官网:Swiper - 最现代的移动触控滑块 - Swiper 中文

最近用svelte写轮播图,用了Swiper组件。需求是:一共三张图,来回切,保持循环(1,2,3->2,3,1->3,1,2->1,2,3).

像这样:

在这里插入图片描述
版本:6.8.4和11.1.4

写一个博客记录一下学习过程和踩过的坑。

代码(6.8.4)

js:

初始化一个轮播图,有4个属性,分别表示:

  • 容器内显示3个轮播图
  • 选中的居中
  • 循环
  • 初始第2个居中(索引从0开始)
import Swiper from 'swiper/swiper-bundle';
import 'swiper/swiper-bundle.css';
import { onMount, afterUpdate } from 'svelte';let swiperContainer, swiperInstance;
onMount(() => {// 轮播图swiperInstance = new Swiper('.swiper-container', {slidesPerView: 3, //'auto'centeredSlides: true,loop: false,initialSlide: 1,});
})// 在数据更新后要更新一下轮播图
afterUpdate(() => {if (swiperInstance) {swiperInstance.update();}
});

html:

网络请求得到数据,原本使用循环渲染每一个slide,即3个。但是,这样会使得loop失效:使用loop的话(loop:true)要请求完图片才知道有多少个slide,会导致:一进页面不能立即显示轮播图。

我们期望一进页面就看到三个图(尽管没有图片,但有三个框)。

注意:这里我们loop:true,但是上面的js代码loop:false,原因后面说。

因此我们写死三个div。

但是:loop:true虽然会显示循环,但是效果不好,在循环的图active(选中居中)之前,它是没有图片渲染出来的。如:循3,1,2的 循3 是空的,要把 循3 滑到中间,即 循2,循3,1 ,循3 才会显示出图片,但是此时循2没有显示出图片。

解决方法:手动循环。div写死五张图,这样一进页面所有图都是渲染出来的。

<div bind:this={swiperContainer} class="swiper-container"><div class="swiper-wrapper"><!-- 手动添加第三张图,防止初次渲染不会复制出现空图 --><div class="swiper-slide"><img class="cover" src={coverList[2]} alt="coverImage" /></div><div class="swiper-slide"><img class="cover" src={coverList[0]} alt="coverImage" /></div><div class="swiper-slide"><img class="cover" src={coverList[1]} alt="coverImage" /></div><div class="swiper-slide"><img class="cover" src={coverList[2]} alt="coverImage" /></div><div class="swiper-slide"><img class="cover" src={coverList[0]} alt="coverImage" /></div></div>
</div>

手动实现滑动:

// 当滑动结束时,检查是否需要跳转到对应的复制图片,比loop配置好用
swiperInstance.on('slideChangeTransitionEnd', function () {if (swiperInstance.activeIndex === 0) {swiperInstance.slideTo(swiperInstance.slides.length - 2, 0, false); // 无动画地跳转到倒数第二张图片} else if (swiperInstance.activeIndex ===swiperInstance.slides.length - 1) {swiperInstance.slideTo(1, 0, false); // 无动画地跳转到第二张图片}
});

css:

注意要占满轮播图的容器空间,不然滑动时可能出现图片的偏移。

.swiper-slide是每个slide的类,.swiper-slide-active是选中居中的类,.swiper-slide-prev是选中居中的前一个的类,.swiper-slide-next是选中居中的后一个的类。

如果要样式穿透:

:global(.swiper-slide)

如果想防止循环的slide露出来(非页面的三个),可以将他设置为透明:opacity: 0;,将active、prev、next设置为opacity: 1;

代码(11.1.4)

import Swiper from 'swiper';
import 'swiper/css';
import { onMount } from 'svelte';onMounted(()=>{// 轮播图swiperInstance = new Swiper('.swiper', {slidesPerView: 3, //'auto'centeredSlides: true,loop: true,initialSlide: 0,});// 拿完数据后,前后滑动,为了显示全数据(不然左边没数据)swiperInstance.slideNext(0);swiperInstance.slidePrev(0);
})

样式基本没变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLOv8深度学习的CT扫描图像肾结石智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

comsol达西定律的小例子

comsol达西定律的小例子

【深度学习基础】环境搭建 Linux报错bash: conda: command not found...

目录 一、 问题描述二、 解决方法1. 在.bashrc文件中添加环境变量2. 卸载重装anconda 三、总结 一、 问题描述 在linux环境下安装anaconda时候报错&#xff1a;bash: conda: command not found… 二、 解决方法 1. 在.bashrc文件中添加环境变量 参考链接&#xff1a;【解决】…

Java锁升级详解:从偏向锁到重量级锁的演进

简介 在Java并发编程中&#xff0c;synchronized关键字是实现线程同步的一种常见机制。从JDK 1.6开始&#xff0c;为了提高性能&#xff0c;Java虚拟机&#xff08;JVM&#xff09;对synchronized进行了优化&#xff0c;引入了锁升级的概念。锁升级包括从无锁状态到偏向锁、轻…

同步与异步:.NET 中的 Task.WaitAll 和 Task.WhenAll

在 C# 中&#xff0c;异步编程通常涉及同时运行多个任务。处理多个任务的两种常见方法是 Task.WaitAll 和 Task.WhenAll。虽然它们看起来很相似&#xff0c;但它们的用途不同&#xff0c;并且用于不同的场景。本文探讨了 Task.WaitAll 和 Task.WhenAll 之间的区别&#xff0c;并…

C++ 字符串哈希(hush)讲解

文章目录 什么是哈希&#xff08;hash&#xff09;哈希原理实现过程其他练习 什么是哈希&#xff08;hash&#xff09; 哈希&#xff0c;又称 hash&#xff0c;它是密码学的基础&#xff0c;理解哈希是理解数字签名和加密通信等技术的必要前提。 在 C 中&#xff0c;哈希通常…

Centos搭建FTP

FTP搭建 安装vsftpd #安装vsftpd yum install vsftpd -y systemctl start vsftpd systemctl enable vsftpd systemctl restart vsftpd创建测试用户 #创建测试用户 useradd -d /home/ftptest -g ftp -s /sbin/false ftptest passwd ftptest #admin12#$.. echo "/sbin/fa…

【单片机毕业设计选题24054】-基于STM32的水质检测系统

系统功能: 主要功能模块原理图: 电源时钟烧录接口: 单片机和按键输入电路: 传感器采集电路&#xff1a; 资料获取地址 系统主要功能模块代码 初始化代码: /* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration-----------------------------------------------…

SpringSecurity(Authorization Events)

Authorization Events 对于每个被拒绝的授权&#xff0c;都会激发一个 AuthorizationDeniedEvent。此外&#xff0c;还可以为授予的授权激发 AuthorizationGrantedEvent。 若要侦听这些事件&#xff0c;必须首先发布 AuthorizationEventPublisher。 Spring Security 的 Spri…

编译Linux内核, 制作迷你系统并在虚拟机里运行(2)

编译制作环境&#xff1a;ubuntu20.0.4 一&#xff0c;参考文档 Linux 系统裁剪--制作一个最小化的Linux iso镜像 https://blog.csdn.net/alfiy/article/details/122568957 按照上述文档的步骤&#xff0c;制作的iso启动不了&#xff0c;经过多次尝试&#xff0c;发现生成的…

【Go - 常见的5类函数用法】

函数 函数通过func关键字定义&#xff0c;后跟函数名、参数列表、返回类型。语法如下&#xff1a; func functionName(parameters) returnType {// 函数体 }示例 func add(x int, y int) int {return x y }func swap(x, y string) (string, string) {return y, x }变参函数…

电脑虚拟摄像头怎么使用?电脑摄像头可以被虚拟摄像头替代吗?8款推荐!

在数字化日益普及的今天&#xff0c;视频通话和在线会议已成为我们生活和工作中不可或缺的一部分。然而&#xff0c;当我们的电脑没有配备摄像头&#xff0c;或摄像头出现故障时&#xff0c;我们可能会面临一些不便。这时&#xff0c;电脑虚拟摄像头便成为了一个实用的解决方案…

C# 策略模式(Strategy Pattern)

策略模式定义了一系列的算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。 // 策略接口 public interface IStrategy { void Execute(); } // 具体策略A public class ConcreteStrategyA : IStra…

前端面试题37(js递归)

在JavaScript中&#xff0c;递归是一种编程技术&#xff0c;它允许函数调用自身来解决问题。这种方法通常用于处理分治策略的算法&#xff0c;比如遍历树形结构、计算阶乘、 Fibonacci数列等。下面通过几个示例来说明如何使用递归。 1. 计算阶乘 阶乘是一个经典的递归示例&am…

[激光原理与应用-102]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 6 - 激光焊接系统的组成

目录 一、激光焊接系统的组成概述 1.1、核心部件 1.2、焊接执行部件 1.3、辅助系统 1.4、控制系统 1.5、其他辅助设备 二、激光器 2.1 按出光类型分 1. 脉冲激光器 2. 连续激光器 3. 准连续激光器&#xff08;QCW&#xff09; 4. 其他常见激光器 5. 应用领域 2.2…

SDK游戏盾、高防IP和高防CDN有什么区别

SDK 游戏盾、高防 IP 和高防 CDN 主要有以下区别&#xff1a; SDK 游戏盾&#xff1a; • 原理&#xff1a;通常需要集成到游戏应用程序中&#xff0c;通过在游戏客户端和服务器之间建立加密通道和智能调度&#xff0c;实现对游戏的防护。 • 特点&#xff1a;能更深入地与游…

C 语言中如何进行冒泡排序?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

JVM内存泄露的ThreadLocal详解

目录 一、为什么要有ThreadLocal 二、ThreadLocal的使用 三、实现解析 实现分析 具体实现 Hash冲突的解决 开放定址法 链地址法 再哈希法 建立公共溢出区 四、引发的内存泄漏分析 内存泄漏的现象 分析 总结 错误使用ThreadLocal导致线程不安全 一、为什么要有Thr…

Qt开发 | Qt绘图技术 | 常见图像绘制 | Qt移动鼠标绘制任意形状 | Qt绘制带三角形箭头的窗口

文章目录 一、基本绘图技术介绍二、常见的18种图形、路径、文字、图片绘制三、Qt移动鼠标绘制任意形状四、Qt绘制带三角形箭头的窗口 一、基本绘图技术介绍 Qt提供了绘图技术&#xff0c;程序员可以在界面上拖动鼠标&#xff0c;或者在代码里指定参数进行绘图。 Qt绘图技术介绍…

如何在 C 语言中实现链表?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…