赞
踩
作为轮播图的首选插件,swiper无疑是这方面专注性最强的。
但是,在使用时,每次都会遇到一个很*疼的问题:
就是把官网里的示例拿过来,并不能跑的通,而且不同版本之间,
使用起来 差别还挺大。
作为和框架契合前的最稳定版本swiper@5.4.5
,
它使用简单,配置方便,所以这个版本依然是项目中的首选。
之前写过一篇在vue中使用swiper
,和react中基本一致,配置完全相同,
https://blog.csdn.net/tuzi007a/article/details/122646552?spm=1001.2014.3001.5501
本篇就是该基础上写的。所以本篇中的配置部分会略掉。
如果是在项目中简单使用一下轮播图,我依然推荐使用该版本。
稳定性和舒适性是我所使用过的所有版本中最强的。
所以该篇仍先介绍该版本在react中的使用。
// 安装
npm i swiper@5.4.5
// 卸载
npm uninstall swiper
这里以DemoSwiper.jsx
组件为例。
// swiper@5.4.5
import Swiper from 'swiper/js/swiper.js' // 引入js
import 'swiper/css/swiper.min.css' // 引入样式
import React, {useEffect} from 'react' // swiper@5.4.5 import Swiper from 'swiper/js/swiper.js' // 引入js import 'swiper/css/swiper.min.css' // 引入样式 const DemoSwiper = () => { useEffect(() => { // 配置swiper播放 配置项都写这里面 const mySwiper = new Swiper('.swiper-container', { autoplay: true, loop: true }) }, []) // swiper的html结构 // 注意!!!:该版本中swiper最外层的类名一定是'swiper-container',不要用其他的哦 return <div className='swiper-container' style={{width: '400px', margin: 'auto', textAlign: 'center'}}> <div class="swiper-wrapper" style={{color: '#fff'}}> <div class="swiper-slide swiper-slide1" style={{backgroundColor: 'blue'}}>Slide 1</div> <div class="swiper-slide swiper-slide2" style={{ backgroundColor: 'red' }}>Slide 2</div> <div class="swiper-slide swiper-slide3" style={{ backgroundColor: 'yellow', color: '#333' }}>Slide 3</div> </div> </div> } export default DemoSwiper
不出意外,此时应该能在页面看到这样的轮播图效果了:
这个版本已经支持专门的前端框架了,拥有了swiper-vue.js swiper-react.js
等文件。
在哪个框架中使用,就从对应的文件中引入即可。
每个文件夹里,有对应的json,用于导入对应的组件。
扯远了,现在就来说说用法。
// 安装
npm i swiper@6.8.4
// 卸载
npm uninstall swiper
import React from 'react' // swiper@6.8.4 import { Swiper, SwiperSlide } from 'swiper/react' // 引入js import 'swiper/swiper.min.css' // 引入样式 const SwiperComp = (props) => { return <Swiper style={{ width: '400px' }} onSlideChange={() => console.log('slide change')} onSwiper={(swiper) => console.log(swiper)} > <SwiperSlide>Slide 1</SwiperSlide> <SwiperSlide>Slide 2</SwiperSlide> <SwiperSlide>Slide 3</SwiperSlide> <SwiperSlide>Slide 4</SwiperSlide> </Swiper> } export default SwiperComp
此时,可以看到基本的轮播图结构了。
不得不说,swiper这一点做的是真的不地道,一个非常非常核心的插件,
竟然没有出现在官方文档里,而且,在源码中也没有搜到。
上面那一步完成之后,只能看到完整的轮播图结构,但是轮播图并不会跑起来,
即自动播放和循环播放等。
如果要实现这些功能,需要用到SwiperCore
这个要单独引入和使用,然后加上配置项,才能让轮播图跑起来。
// 封装一个轮播器 import React from 'react' // swiper@6.8.4 import { Swiper, SwiperSlide } from 'swiper/react' // 引入js import SwiperCore, { Autoplay } from 'swiper/core' // 引入核心插件和自动播放组件 import 'swiper/swiper.min.css' // 引入样式 SwiperCore.use([Autoplay]) // 使用插件,插件名放入[]中,这一行是重点 const SwiperComp = (props) => { return <Swiper style={{ width: '400px' }} // 在组件标签中进行配置,注意这里的autoplay都是小写的哦 autoplay loop > <SwiperSlide>Slide 1</SwiperSlide> <SwiperSlide>Slide 2</SwiperSlide> <SwiperSlide>Slide 3</SwiperSlide> <SwiperSlide>Slide 4</SwiperSlide> </Swiper> } export default SwiperComp
此时,在页面中,就可以看到一个跑动起来的轮播图了。
正如上面的autoplay, loop等配置项,都是配置在swiper标签里的。
其配置方法,和new Swiper('', { // config...})
中的写法一样。
只是,一定要先引入,然后use,即SwiperCore.use([...])
下面就介绍一下常用的配置项:
autoplay
用于轮播图自动切换。
如果标签中只写autoplay
配置项(在react中也可以写作autoplay={true}
),就会按照默认的设置,
即autoplay
相当于:
<Swiper
autoplay={{
delay: 3000, // 默认延迟3s播放下一张
stopOnLastSlide: false, // 播放到最后一张时停止:否
disableOnInteraction: true // 用户操作轮播图后停止 :是
}}
>
</Swiper>
自动切换中,还有一些配置项:
pauseOnMouseEnter
:鼠标进入轮播图时停止播放,鼠标离开时继续播放。默认false。开启为true 。
loop
用于循环播放
如果只写autoplay,那么当轮播图播放完最后一张时,会从最后一张回到第一张,
而不是播放第一张。
加上loop配置项,就可以让轮播图123123123…这样循环播放下去。
<Swiper
autoplay
loop
>
</Swiper>
direction
控制轮播图方向,默认为horizontal
,即水平方向。
若要改为上下播放,在react中可以设置为vertical
<Swiper
autoplay
loop
direction='vertical'
>
</Swiper>
speed
单张图片从一端滑动到另一端需要的时间,默认为300
,单位默认为ms
如需修改,在组件标签中可以进行修改:
<Swiper
autoplay
loop
speed={1000} // 修改为1000ms
>
</Swiper>
pagination
用于分页器的配置。分页器的使用,分为三个步骤:
1.需要先引入:
import SwiperCore, { Autoplay, Pagination } from 'swiper/core'
import 'swiper/components/pagination/pagination.min.css'
2.然后在use中使用:
SwiperCore.use([Autoplay, Pagination])
3.在组件标签中添加配置项
<Swiper
autoplay
loop
pagination={{
clickable: true
}}
>
</Swiper>
如需用到更多的配置项,可以查看下面的完整配置项中提供的官方API文档。
在vue中使用swiper@5.4.5这篇文章中,介绍了几个常用的配置项,可以作为参考。
这些配置项在所有框架中,都是通用的,配置方法也是完全一致的。
如果要查看完整的配置项,可以进入官网查看:
https://www.swiper.com.cn/api/index.html
一般来说,轮播器的每项内容,都是后端传来的数据,
前端获取到这些数据,生成对应的轮播图。
比如datas就是我们从后端获取到的数据,
import React from 'react' import SwiperComp from './SwiperComp.jsx' const DemoSwiper = () => { const datas = [ // 后端传来的数据 { id: "001", name: '迪丽热巴', age: 18 }, { id: "002", name: '小明', age: 14 }, { id: "003", name: '张三', age: 23 }, { id: "004", name: '王二狗', age: 19 }, { id: "005", name: '王境泽', age: 233 }, ] return <div className='report' style={{ width: '600px', height: '30px', backgroundColor: 'pink', margin: 'auto', lineHeight: '30px', textAlign: 'center', overflow: 'hidden' }}> {/* 使用轮播器 */} <SwiperComp datas={datas}></SwiperComp> </div> } export default DemoSwiper
下面是我们封装好的一个简易的上下滚动的轮播器:
// 封装一个上下滚动的轮播器 import React from 'react' // swiper@6.8.4 import { Swiper, SwiperSlide } from 'swiper/react' // 引入js import SwiperCore, { Autoplay, Pagination } from 'swiper/core' import 'swiper/swiper.min.css' // 引入样式 import 'swiper/components/pagination/pagination.min.css' SwiperCore.use([Autoplay, Pagination]) const SwiperComp = (props) => { const {datas} = props return <Swiper autoplay loop direction="vertical" > { datas.map((item, index) => { return <SwiperSlide key={item.id}> 我是{item.name},我今年{item.age}岁了~ </SwiperSlide> }) } </Swiper> } export default SwiperComp
得到的效果是:
以上就是swiper的5.4.5和6.8.4两个版本在react中的使用方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。