【Swiper】轮播图 笔记

news2024/11/16 7:52:46

文章目录

    • 场景
    • 代码

场景

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

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

像这样:

在这里插入图片描述
版本: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;

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

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

相关文章

2024年06月CCF-GESP编程能力等级认证Python编程四级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证…

盛水对多容器、判断子序列-双指针题型

11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; 双指针两头向里移动&#xff0c;短的先动&#xff1b; class Solution { public:int maxArea(vector<int>& height) {int l 0, r height.size() - 1;int ans 0;while(l < r){int area min(height…

阿里云登陆Centos7

用自己电脑登陆Centos7太麻烦了&#xff0c;还要自己弄个虚拟机&#xff0c;一个电脑里面既有WIN又有LINUX&#xff0c;索性直接买个阿里云服务器&#xff0c;来学习Centos7。 购买 我是新用户&#xff0c;可以试用3个月&#xff0c;先用个3个月再说哈哈哈。 一系列操作之后…

(硬件05)电流检测中运放的“虚短”与“虚断”

本文目录 本篇前言知识点讲解软件仿真 本篇前言 运放&#xff0c;全称是运算放大器&#xff0c;一般的用法是用来发大电信号的&#xff0c;本篇讲解到的就是通过运算放大器将大电流流过采样电阻后的电压进行放大后输出给单片机的ADC&#xff0c;单片机根据ADC的值&#xff08…

无人机之穿越机操作技巧篇

一、低高度练习 选择低高度进行飞行练习&#xff0c;这样即使操作失误&#xff0c;也能减少飞行器受损的风险。 二、平稳起降 在起飞和降落时&#xff0c;要控制好飞行器的垂直状态&#xff0c;避免因为操作不当导致飞行器倾斜甚至坠机。 三、画圆飞行 通过水平面上的圆形…

提高LabVIEW软件通用性的方法

提高LabVIEW软件通用性的方法 在使用LabVIEW开发软件时&#xff0c;提高软件的通用性非常重要。通用性意味着软件可以在不同的应用场景中使用&#xff0c;具备高度的适应性和灵活性&#xff0c;从而提高软件的价值和用户满意度。以下从多个角度详细探讨如何提高LabVIEW软件的通…

第16周:LSTM-火灾温度预测

目录 前言 一、LSTM简介 1.1 LSTM的本质 1.2 LSTM的提出 1.3 LSTM的原理 1.3.1 RNN原理介绍 1.3.2 LSTM原理介绍 二、前期准备 2.1 导入库、设置GPU 2.2 导入数据 2.3 构建数据集 2.3.1 数据集预处理 2.3.2 设置X&#xff0c;y 2.3.3 缺失值检测 2.3.4 划分数据…

数据分析师技术和必备知识汇总-----Excle-----持续更新

数据分析师技术和必备知识汇总-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/140174015 文章目录 一、数据清洗1. 去除空格2. 字符串拼接3. 字符串截取4. 替换函数5. 求长度6. 相对引用和绝对引用7. 查找函数和排名…

单链表详解(2)

三、函数定义 查找节点 //查找结点 SLTNode* SLTNodeFind(SLTNode* phead, SLTDataType x) {assert(phead);SLTNode* pcur phead;while (pcur){if (pcur->data x){return pcur;}pcur pcur->next;}return NULL; } 查找节点我们是通过看数据域来查找的&#xff0c;查…

什么?这动物图片可以上国家地理?

stable difussion中大部分的模型都是关于人的,今天交给大家一些不一样的:如何生成动物图片。在这篇文章中我们将会学到如何生成逼真的动物&#xff0c;可爱的动物&#xff0c;还有幻想中的动物。 准备工作 当然前提是你需要一个SD的软件&#xff0c;你可以用本地的SD webUI或…

高清图片压缩无水印小程序源码系统 前后端分离 带完整的安装代码包以及搭建教程

系统概述 在当今的数字化时代&#xff0c;图片作为信息传播的重要载体&#xff0c;其质量和传输效率直接影响到用户体验。然而&#xff0c;高清图片往往伴随着较大的文件体积&#xff0c;这不仅会占用大量存储空间&#xff0c;还会拖慢网页或应用的加载速度。因此&#xff0c;…

【VUE基础】VUE3第七节—Vue Router路由基础

Vue Router 是 Vue 官方的客户端路由解决方案。 客户端路由的作用是在单页应用 (SPA) 中将浏览器的 URL 和用户看到的内容绑定起来。当用户在应用中浏览不同页面时&#xff0c;URL 会随之更新&#xff0c;但页面不需要从服务器重新加载。 Vue Router 基于 Vue 的组件系统构建&…

代码随想录-Day55

42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高…

【VS2019】安装下载库HtmlAgilityPack,可解析 HTML (图文详情)

目录 0.背景 1.环境 2.详细步骤 0.背景 项目需要&#xff0c;搭建WCF服务&#xff0c;需求是输入一个string类型字符串&#xff08;网页代码&#xff0c;如<html><body><p>Hello, <b>World</b>!</p></body></html>&#xf…

[嵌入式 C 语言] 按位与、或、取反、异或

一、按位与 & 有0则0&#xff0c;全1则11010 & 0011 00100xef & 0xfe 0xee &#xff08; 0x1110 1111 & 0x1111 1110 0x1110 1110&#xff09; 若协议中如下图所示&#xff1a; 1.1 配合左移运算符 << 取指定的位 说明&#xff1a;DEC表示十进制、…

原生APP开发的优势

原生APP开发是指使用特定的编程语言和开发工具&#xff0c;针对特定的操作系统平台进行开发的应用程序。相比于混合开发和Web开发&#xff0c;原生APP开发具有以下优势。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 性能更优 原…

echartsBug-dataZoom拖拽无效果

项目情况&#xff1a;"vue": "3.2.4",使用vue2语法开发 遇到问题&#xff1a;想要给图表增加dataZoom,但是拉拽的时候不生效 解决方法&#xff1a; 这个情况同样也会发生在tooltip不生效上。 之前的写法是将myChart定义在data()之中&#xff0c;但是无效…

怎么用js语句动态调整 .jstree.jstree-2.jstree-default 高度

&#x1f3c6;本文收录于《CSDN问答解惑》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

PHP全民投票微信小程序系统源码

&#x1f5f3;️【全民参与的力量】全民投票系统小程序&#xff0c;让决策更民主&#xff01; &#x1f310; 一键启动&#xff0c;全民参与 全民投票系统小程序&#xff0c;是连接每一个声音的高效桥梁。只需简单几步&#xff0c;即可在线发起投票活动&#xff0c;无论是社区…

java基础01—根据源码分析128陷阱以及如何避免128陷阱

源码分析128陷阱 如上图所示&#xff0c;int类型数据超过127依旧能正常比较&#xff0c;但Integer类型就无法正确比较了 /*** Cache to support the object identity semantics of autoboxing for values between* -128 and 127 (inclusive) as required by JLS.** The cache …