Swiper组件(四)--Loop(环路)

loop

(1)loop模式:会在原本slide前后复制若干个slide(默认一个)并在合适的时候切换,让Swiper看起来是循环的。
(2)注意:loop模式在与free模式同用时会产生抖动,因为free模式下没有复制slide的时间点。

<div class="swiper-box">
        <div class="swiper-container" id="mySwiper16">
            <div class="swiper-wrapper">
                <div class="swiper-slide" style="background-color: #f00;">slide 1</div>
                <div class="swiper-slide" style="background-color: #ff0;">slide 2</div>
                <div class="swiper-slide" style="background-color: #f0f;">slide 3</div>
                <div class="swiper-slide" style="background-color: #fff;">slide 4</div>
                <div class="swiper-slide" style="background-color: #00f;">slide 5</div>
                <div class="swiper-slide" style="background-color: #0f0;">slide 6</div>
                <div class="swiper-slide" style="background-color: #0ff;">slide 7</div>
                <div class="swiper-slide" style="background-color: #aaa;">slide 8</div>
                <div class="swiper-slide" style="background-color: #0aa;">slide 9</div>
            </div>
            <!-- 如果需要分页器 -->
            <div class="swiper-pagination"></div>
            <!-- 如果需要导航按钮 -->
            <div class="swiper-button-prev"></div>
            <div class="swiper-button-next"></div>
        </div>
        <div class="buttonNew">Loop:true</div>
    </div>
let mySwiper16 = new Swiper("#mySwiper16", {
    pagination: {
        el: '.swiper-pagination',
    },
    navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
    },
    loop: true,
})

loopAdditionalSlides

(1)loop模式下会在slides前后复制若干个slide,,前后复制的个数不会大于原总个数。
(2)该属性在效果上看起来没有什么差别,但是在获取slide个数时却有不同
默认为0,前后各复制1个。0,1,2 --> 2,0,1,2,0-------slide:5
例:取值为1,0,1,2 --> 1,2,0,1,2, 0,1-------slide:7
例:取值为2,0,1,2 – 0,1,2,0,1,2, 0,1,2-------slide:9

    <div class="swiper-box">
        <div class="swiper-container" id="mySwiper17">
            <div class="swiper-wrapper">
                <div class="swiper-slide" style="background-color: #0ff;">slide 1</div>
                <div class="swiper-slide" style="background-color: #aaa;">slide 2</div>
                <div class="swiper-slide" style="background-color: #0aa;">slide 3</div>
            </div>
            <!-- 如果需要分页器 -->
            <div class="swiper-pagination"></div>
            <!-- 如果需要导航按钮 -->
            <div class="swiper-button-prev"></div>
            <div class="swiper-button-next"></div>
        </div>
        <div class="buttonNew">loopAdditionalSlides:2</div>
        <div class="buttonNew">slide个数:9个</div>
    </div>
let mySwiper17 = new Swiper("#mySwiper17", {
    pagination: {
        el: '.swiper-pagination',
    },
    navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
    },
    loop: true,
    loopAdditionalSlides: 2,
})

loopedSlides

(1)在loop模式下使用slidesPerview:‘auto’,还需使用该参数设置所要用到的loop个数-----最新版的已经没有这个问题,不设置也可以正常使用
(2)一般设置大于等于可视slide个数即可。否则loop失效。

    <div class="swiper-box">
        <div class="swiper-container" id="mySwiper18">
            <div class="swiper-wrapper">
                <div class="swiper-slide" style="width:20%;background-color: #f00;">slide 1</div>
                <div class="swiper-slide" style="width:20%;background-color: #ff0;">slide 2</div>
                <div class="swiper-slide" style="width:20%;background-color: #f0f;">slide 3</div>
                <div class="swiper-slide" style="width:20%;background-color: #fff;">slide 4</div>
                <div class="swiper-slide" style="width:20%;background-color: #00f;">slide 5</div>
                <div class="swiper-slide" style="width:20%;background-color: #0f0;">slide 6</div>
                <div class="swiper-slide" style="width:20%;background-color: #0ff;">slide 7</div>
                <div class="swiper-slide" style="width:20%;background-color: #aaa;">slide 8</div>
                <div class="swiper-slide" style="width:20%;background-color: #0aa;">slide 9</div>
            </div>
            <!-- 如果需要分页器 -->
            <div class="swiper-pagination"></div>
            <!-- 如果需要导航按钮 -->
            <div class="swiper-button-prev"></div>
            <div class="swiper-button-next"></div>
        </div>
        <div class="buttonNew">loopedSlides:5</div>
    </div>
let mySwiper18 = new Swiper("#mySwiper18", {
    pagination: {
        el: '.swiper-pagination',
    },
    navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
    },
    slidesPerView: 'auto',
    loop: true,
    loopedSlides: 5,
})

loopFillGroupWithBlank

在loop模式下,为group填充空白slide。

    <div class="swiper-box">
        <div class="swiper-container" id="mySwiper19">
            <div class="swiper-wrapper">
                <div class="swiper-slide" style="background-color: #ff0;">slide 2</div>
                <div class="swiper-slide" style="background-color: #f0f;">slide 3</div>
                <div class="swiper-slide" style="background-color: #fff;">slide 4</div>
                <div class="swiper-slide" style="background-color: #00f;">slide 5</div>
                <div class="swiper-slide" style="background-color: #0f0;">slide 6</div>
                <div class="swiper-slide" style="background-color: #0ff;">slide 7</div>
                <div class="swiper-slide" style="background-color: #aaa;">slide 8</div>
                <div class="swiper-slide" style="background-color: #0aa;">slide 9</div>
            </div>
            <!-- 如果需要分页器 -->
            <div class="swiper-pagination"></div>
            <!-- 如果需要导航按钮 -->
            <div class="swiper-button-prev"></div>
            <div class="swiper-button-next"></div>
        </div>
        <div style="margin: 10px 0px;">loopFillGroupWithBlank:true</div>
    </div>
let mySwiper19 = new Swiper("#mySwiper19", {
    pagination: {
        el: '.swiper-pagination',
    },
    navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
    },
    slidesPerView: 3,
    slidesPerGroup: 3,
    loop: true,
    loopFillGroupWithBlank: true,
})

loopPreventsSlide

(1)当swiper正在过渡时,阻止slide前进后退的切换操作,此功能仅在loop模式下有效。
(2)可设置为false关闭此功能。

React Swiper是一个用于创建响应式触摸滑块的库,它可以在React应用中轻松集成轮播效果。如果你想为`.swiper-slide-active`和`.swiper-slide-duplicate-active`状态下的slide添加模块化的样式,你可以通过以下步骤操作: 1. 首先,在你的项目中安装Swiper组件,如果还没有安装,可以使用npm或yarn命令: ```bash npm install swiper react-swiper # 或者 yarn add swiper react-swiper ``` 2. 然后在你的React组件里导入Swiper及其CSS文件: ```jsx import React from 'react'; import { Swiper, SwiperSlide } from 'react-swiper'; import 'swiper/dist/css/swiper.css'; // 引入Swiper的CSS ``` 3. 创建一个自定义的样式变量或者在你的全局样式表中定义新的类名,例如: ```css /* 如果在全局样式表中 */ .custom-slide-active { background-color: blue; border-radius: 5px; } /* 或者在组件内部 */ const customSlideActiveStyles = { backgroundColor: 'blue', borderRadius: '5px', }; ``` 4. 使用这些样式来应用到`.swiper-slide-active`和`.swiper-slide-duplicate-active`上。你可以在Swiper组件的options中设置类名,并在`.swiper-slide`组件上覆盖默认样式: ```jsx const CustomSwiper = () => { const styles = { slideActiveClasses: 'custom-slide-active', // 自定义的active类名 slideDuplicateActiveClasses: 'custom-slide-active', // 同样自定义duplicated active类名 }; return ( <Swiper className="swiper-container" slidesPerView={1} onSlideChangeStart={(prev, next) => console.log(next.isNext)} styles={{ ...styles }} > <SwiperSlide className={['swiper-slide', next.isNext ? styles.slideActiveClasses : '', next.isDuplicate ? styles.slideDuplicateActiveClasses]} /> </Swiper> ); }; ``` 现在,`.swiper-slide-active`和`.swiper-slide-duplicate-active`的状态将应用你自定义的样式。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值