JS 流行库(五):Swiper

JS 流行库(五):Swiper

Swiper 是使用 JavaScript 实现的跨平台滑动特效插件,开源、免费、稳定、简单且功能强大,可以实现焦点图、tab 切换等常用效果

此篇笔记中 Swiper 的版本为 8.x

基本使用

  1. 导入 swiper 库

示例如下:

<link rel="stylesheet" href="./swiper-bundle.css">
<script src="./swiper-bundle.js"></script>

不同版本的 Swiper 中导入的文件不同

  1. HTML 结构

示例如下:

<style>
    .swiper {
        width: 600px;
        height: 300px;
        text-align: center;
        border: 1px solid black;
        border-radius: 15px;
        box-shadow: 0 0 10px gray;
        margin: 50px auto;
    }

    .swiper-wrapper {
        line-height: 300px;
    }
</style>
<div class="swiper">
    <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>
</div>
  1. JavaScript 代码

示例如下:

window.onload = function () {
    let mySwiper = new Swiper('.swiper');
}

高级使用

以下将介绍的功能均基于上述已初始化的焦点图

分页器

在 Swiper 中新增分页器的过程如下所示:

  1. HTML 结构

示例如下:

<div class="swiper">
    <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>
    <div class="swiper-pagination"></div>
</div>
  1. JavaScript 代码

示例如下:

window.onload = function () {
    let mySwiper = new Swiper('.swiper', {
        pagination: {   // 分页
            el: '.swiper-pagination',   // DOM 元素
            clickable: true,            // 分页点击
            dynamicBullets: true        // 动态分页
        }
    });
}

在上述示例中,演示了部分 pagination 的属性,详情可以查询 API 文档

无限循环

如果在 Swiper 中实现无限循环,那么可以在初始化时配置选项,从而实现无限循环功能,示例如下:

window.onload = function () {
    let mySwiper = new Swiper('.swiper', {
        pagination: {
            el: '.swiper-pagination',
            clickable: true,
            dynamicBullets: true
        },
        loop: true  // 无限循环
    });
}

自动切换

如果在 Swiper 中实现自动切换,那么可以在初始化时配置选项,从而实现自动切换功能,示例如下:

window.onload = function () {
    let mySwiper = new Swiper('.swiper', {
        pagination: {
            el: '.swiper-pagination',
            clickable: true,
            dynamicBullets: true
        },
        loop: true,
        autoplay: { // 自动切换
            delay: 2000 // 延迟时间
        }
    });
}

导航

在 Swiper 中新增导航的过程如下所示:

  1. HTML 结构

示例如下:

<div class="swiper">
    <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>
    <div class="swiper-pagination"></div>
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
</div>
  1. JavaScript 代码

示例如下:

window.onload = function () {
    let mySwiper = new Swiper('.swiper', {
        pagination: {
            el: '.swiper-pagination',
            clickable: true,
            dynamicBullets: true
        },
        loop: true,
        autoplay: {
            delay: 2000
        },
        navigation: {   // 导航
            nextEl: '.swiper-button-next',  // DOM 元素
            prevEl: '.swiper-button-prev',  // DOM 元素
        }
    });
}

动画

在切换焦点图内容时,Swiper 可以为内容添加动画,过程如下:

  1. HTML 结构

示例如下:

<div class="swiper">
    <div class="swiper-wrapper">
        <div class="swiper-slide">
            <p class="ani" swiper-animate-effect="bounceIn">Slide 1</p>
        </div>
        <div class="swiper-slide">
            <p class="ani" swiper-animate-effect="bounceInDown">Slide 2</p>
        </div>
        <div class="swiper-slide">
            <p class="ani" swiper-animate-effect="bounceInUp">Slide 3</p>
        </div>
    </div>
    <div class="swiper-pagination"></div>
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
</div>
  1. JavaScript 代码

示例如下:

window.onload = function () {
    let mySwiper = new Swiper('.swiper', {
        pagination: {
            el: '.swiper-pagination',
            clickable: true,
            dynamicBullets: true
        },
        loop: true,
        autoplay: {
            delay: 2000
        },
        navigation: {
            nextEl: '.swiper-button-next',
            prevEl: '.swiper-button-prev',
        },
        on: {
            init: function () {
                swiperAnimateCache(this);   // 隐藏动画元素 
                swiperAnimate(this);        // 初始化完成开始动画
            },
            slideChangeTransitionEnd: function () {
                swiperAnimate(this);        // 每个 slide 切换结束时也运行当前 slide 动画
            }
        }
    });
}

Swiper 中动画效果的底层原理是 CSS3 的动画,如此我们可以在 CSS 代码中自定义动画,示例如下:

@keyframes myAnimation {
    0% {
        opacity: 0;
        transform: scale(2);
    }

    100% {
        opacity: 1;
        transform: scale(1);
    }
}

.myAnimation {
    animation-name: myAnimation;
}

将相应 DOM 元素的 swiper-animate-effect 属性设置为自定义动画名称即可,示例如下:

<div class="swiper">
    <div class="swiper-wrapper">
        <div class="swiper-slide">
            <p class="ani" swiper-animate-effect="myAnimation">Reyn Morales</p>
        </div>
        <div class="swiper-slide">
            <p class="ani" swiper-animate-effect="bounceInDown">Slide 2</p>
        </div>
        <div class="swiper-slide">
            <p class="ani" swiper-animate-effect="bounceInUp">Steven Jobs</p>
        </div>
    </div>
    <div class="swiper-pagination"></div>
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
</div>

此外,也可以在 HTML 中通过 swiper-animate-duration 和 swiper-animate-delay 属性配置动画的持续时间和延迟时间,示例如下:

<div class="swiper">
    <div class="swiper-wrapper">
        <div class="swiper-slide">
            <p class="ani" swiper-animate-effect="myAnimation">Reyn Morales</p>
        </div>
        <div class="swiper-slide">
            <p class="ani" swiper-animate-effect="bounceInDown" 
                           swiper-animate-duration="0.5s" 
                           swiper-animate-delay="0.3s">Slide 2</p>
        </div>
        <div class="swiper-slide">
            <p class="ani" swiper-animate-effect="bounceInUp">Steven Jobs</p>
        </div>
    </div>
    <div class="swiper-pagination"></div>
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
</div>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值