Nuxt框架下引入Swiper完成带缩略图照片轮播的黑科技

本文介绍了如何在Nuxt项目中利用Swiper 4.4.2版本创建带缩略图的照片轮播。首先在`nuxt.config.js`引入Swiper的js和css,接着构建包含轮播图片和缩略图的DOM结构,并定义数据源。然后在`mounted`阶段配置Swiper脚本,并调整样式以适应PC和移动端展示。虽然过程中遇到了自动翻页的问题,最终成功实现了预期效果。

笔者的吐槽 (赶时间请忽略这段文字,直接进入正文 _(:з」∠)_ ):最近有个项目是基于Nuxt框架,新需求需要新增加一块照片轮播的功能,笔者小白之前用过Swiper插件,感觉还比较好用,一般简单的效果都能实现,于是,按某站点的攻略,开始安装Swiper(npm install swiper),然后按照文章里基于vue的开发,笔者开始照猫画鼠的try try try之路(用swiper6吧,按攻略1的写法其实是用了swiper3的语法,但是效果无法自动翻页;打算用swiper6的语法呢,发现6只能在vue3以上使用,而nuxt中包含的vue版本是2.x;用vue-awesome-swiper,根据攻略进行了plugins相关配置,创建组件并且进行了封装,结果发现兜兜转转还是老问题,无法自动翻页,最后突然间,头脑中闪过一道闪电 Σ(っ °Д °;)っ 原来是这样!!!)

正文

项目背景:依赖包 nuxt、vue-class-component、vue-property-decorator、typescript;

项目需求:完成带有缩略图的图片轮播效果;

方案步骤

1、在 nuxt.config.js 文件引入swiper js和css包(笔者用的是 4.4.2,代码挂在在cdn上,这里演示就用 url 字样代替具体地址吧)

module.exports = {

    head: {
      link: [
        { rel: 'stylesheet', type: 'text/css', href: '//url/swiper.min.css'}
      ],
      script: [
        { src: '//url/swiper.min.js'}
	  ],
    }
}

2、dom结构,包含轮播部分图片和缩略图两个版块的代码


                
你可以使用 `swiper` 插件中的 `thumbs` 属性来实现缩略图控制,并使用 `autoplay` 属性来实现自动播放,如下所示: ```html <template> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide">Slide 1</div> <div class="swiper-slide">Slide 2</div> <div class="swiper-slide">Slide 3</div> <div class="swiper-slide">Slide 4</div> <div class="swiper-slide">Slide 5</div> <div class="swiper-slide">Slide 6</div> <div class="swiper-slide">Slide 7</div> <div class="swiper-slide">Slide 8</div> <div class="swiper-slide">Slide 9</div> <div class="swiper-slide">Slide 10</div> </div> <div class="swiper-pagination"></div> <div class="swiper-button-prev"></div> <div class="swiper-button-next"></div> <div class="swiper-container-thumbs"> <div class="swiper-wrapper"> <div class="swiper-slide"><img src="thumbnail1.jpg"></div> <div class="swiper-slide"><img src="thumbnail2.jpg"></div> <div class="swiper-slide"><img src="thumbnail3.jpg"></div> <div class="swiper-slide"><img src="thumbnail4.jpg"></div> <div class="swiper-slide"><img src="thumbnail5.jpg"></div> </div> </div> </div> </template> <script> import Swiper from 'swiper'; import 'swiper/css/swiper.css'; export default { mounted() { const mySwiper = new Swiper('.swiper-container', { pagination: { el: '.swiper-pagination', }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, autoplay: { delay: 5000, // 自动播放间隔 }, thumbs: { swiper: { el: '.swiper-container-thumbs', slidesPerView: 5, // 显示缩略图的数量 spaceBetween: 10, // 缩略图之间的间距 autoplay: { delay: 5000, // 缩略图自动播放间隔 }, }, }, }); }, }; </script> <style> .swiper-container-thumbs { margin-top: 10px; } .swiper-container-thumbs .swiper-slide { width: 20%; height: auto; } .swiper-container-thumbs .swiper-slide img { width: 100%; height: auto; } </style> ``` 这里使用 `swiper-container-thumbs` 包含缩略图轮播图,使用 `thumbs` 属性配置缩略图相关的参数,如 `slidesPerView` 控制缩略图显示数量,`spaceBetween` 控制缩略图之间的距离。同时在 `thumbs.swiper` 中使用 `autoplay` 属性设置缩略图自动播放。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值