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结构,包含轮播部分图片和缩略图两个版块的代码


                
要使用Nuxtvue-awesome-swiper来实现缩略图控制的滑动器,可以按照以下步骤: 1. 安装vue-awesome-swiperswiper: ```bash npm install --save vue-awesome-swiper swiper ``` 2. 在nuxt.config.js中添加以下内容来引入所需的CSS文件和插件: ```javascript module.exports = { css: [ 'swiper/css/swiper.css' ], plugins: [ { src: '@/plugins/vue-awesome-swiper', ssr: false } ] } ``` 3. 创建一个新的Vue组件,例如`Slider.vue`,并在其中使用vue-awesome-swiper: ```html <template> <div class="slider-container"> <swiper :options="swiperOptions"> <swiper-slide v-for="(slide, index) in slides" :key="index"> <img :src="slide.image" /> </swiper-slide> <div class="swiper-pagination" slot="pagination"></div> <div class="swiper-button-prev" slot="button-prev"></div> <div class="swiper-button-next" slot="button-next"></div> <swiper-thumbs :swiper="swiper" :slides-per-view="5" :watch-active-index="true" class="thumbs"></swiper-thumbs> </swiper> </div> </template> <script> import { Swiper, SwiperSlide, SwiperThumbs } from 'vue-awesome-swiper' export default { components: { Swiper, SwiperSlide, SwiperThumbs }, data() { return { slides: [ { image: 'https://picsum.photos/id/1018/800/600' }, { image: 'https://picsum.photos/id/1015/800/600' }, { image: 'https://picsum.photos/id/1019/800/600' }, { image: 'https://picsum.photos/id/1016/800/600' }, { image: 'https://picsum.photos/id/1020/800/600' } ], swiperOptions: { pagination: { el: '.swiper-pagination' }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' }, thumbs: { swiper: { slidesPerView: 5, watchSlidesVisibility: true, watchSlidesProgress: true }, slideThumbActiveClass: 'thumb-active', slideThumbClass: 'thumb' } } } } } </script> <style scoped> .thumb { opacity: 0.5; transition: opacity 0.2s ease-in-out; } .thumb-active { opacity: 1; } </style> ``` 在这个例子中,我们首先导入了`Swiper`、`SwiperSlide`和`SwiperThumbs`组件,然后定义了一个`slides`数组来存储我们要展示的图片。接下来,我们创建了一个名为`swiperOptions`的对象来配置我们的滑动器,包括分页、导航和缩略图等选项。最后,我们将这些选项传递给`<swiper>`组件和`<swiper-thumbs>`组件,并使用`v-for`指令在`<swiper-slide>`中动态渲染图片。 请注意,在这个例子中,我们还使用了一些自定义CSS类来定义缩略图的样式。如果需要,您可以根据自己的需求进行修改。 希望这可以帮助您实现一个缩略图控制的滑动器!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值