在react中使用swiper制作具有滑动效果的导航栏

本文介绍了如何在React应用中利用Swiper库创建滑动导航栏。首先需要下载Swiper包,并在相关页面引入Swiper及其样式。由于CSS不在当前页面引入,而是在index.html中引入。然后在React组件的生命周期方法componentDidMount中创建Swiper实例。通过调整样式和使用Swiper对象的方法,可以定制符合需求的滑动效果。切换时的激活类可以根据需要修改或移除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.先下载swiper包

npm install swiper -S

2.在下载完成之后,在想要使用的页面引入swiper

import Swiper from "swiper"

同时还要将swiper的样式进行引入,我当时搜索网上的都是将css和swiper在同一个页面进行引用,但是我的在页面是没有进行引入的,或者说只是在public文件夹里面的index.html文件进行了css的相关引入。
3.就是在使用的地方进行使用

<div class="swiper-container">
                <div class="swiper-wrapper" style={{display:'inline-flex'}}>
                    <div className='swiper-slide'>1</div>
                    <div className='swiper-slide'>2</div>
                    <div className='swiper-slide'>3</div>
                </div>
            </div>

同时自己也可以根据css的类名,改变相关样式,改造成符合自己需要的样子
我的是这样的

.swiper-container{/*把主要的框写好*/
    width:100%;
    height:0.89rem;
    .swiper-slide{/*轮播的内容*/
        width:30%;
        height:100%;
        text-align: center;
        line-height: 0.89rem;
        border-radius: 0.44rem;
        font-size: 0.44rem;
        color: #666666;
        font-weight: bold;
    }
    
}

4.上面就是我使用的相关样式,同时这样还是不能使用的,要等到页面加载完成之后,才能去调用swiper对象里面的方法
因为我是在react中写的,所以我就在生命周期componentDidMount中创建了实例对象。

 componentDidMount(){
        var swiper = new Swiper(".swiper-container", {
            paginationClickable: true,         //值为真时,当单击指示器时会执行过渡动画到目标slide
            speed:300,                         //slides滑动动画之间的持续时间
        slidesPerView: 4,//表示当前显示出来的导航栏数目为4个
    });                
    }

这样就完成了,其他的效果就需要根据自己的需求进行相应的样式调整。
下面是我完整的代码,

import React,{Component} from 'react'
import './index.less'
import Swiper from "swiper"
class Navigation extends Component{
    componentDidMount(){
        var swiper = new Swiper(".swiper-container", {
            paginationClickable: true,         //值为真时,当单击指示器时会执行过渡动画到目标slide
            speed:300,                         //slides滑动动画之间的持续时间
        slidesPerView: 4,
        // slideToClickedSlide:true  
    }); 
    swiper.slideTo(this.props.activedIndex)                
    }
    render(){
        return (
            <>
           <div class="swiper-container">
                <div class="swiper-wrapper" style={{display:'inline-flex'}}>
                    <div className='swiper-slide'>1</div>
                    <div className='swiper-slide'>2</div>
                    <div className='swiper-slide'>3</div>
                </div>
            </div>
            </>
        )
    }
}
export default Navigation

最后还要说明一点,在切换的时会有一个激活类,这个是可有可无的,可以根据自己是否需要进行修改类名,不写就不会显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值