swiper自动播放

712 阅读1分钟

前言:

1、项目需求:最初该页面是隐藏的(display:none),通过点击一个按钮触发页面展示(把display的属性修改为block);要求页面在展示的时候某一部分内容是自动滚动的效果。

2、项目中引入使用的swiper版本是4.x。

3、项目没使用流行的前端框架,仅仅是通过html + css + js + jq实现的。

使用步骤:

1、下载swiper.min.css和swiper.min.js文件并放到项目中 pan.baidu.com/s/192IOk1H6… (4.x版本下载连接)

2、在index.html页面引入文件

3、使用

html部分:

<div class="swiper-container">
    <div class="swiper-wrapper">
	<div class="swiper-slide">
            <ul>
		<li>生育津贴如何领取</li>
		<li>安全员证书如何领取</li>
		<li>疫情防控</li>
	    </ul>
	</div>
    </div>
</div>

js部分:

var mySwiper;
$(".fireBox").click(function () {
        var show = $(".conBox").css("display")
        console.log("show", show);
        if (show == "block") { //关闭
            mySwiper.destroy(true);//销毁实例**************
            $(".conBox").fadeOut()
            localStorage.setItem("data", 0)
        } else { //打开
            mySwiper = new Swiper(".swiper-container", {
                direction: "horizontal", // 水平
                loop: true, // 循环模式选项
                autoplay: {
                    disableOnInteraction: false,
                    delay: 1000,//延迟时间
                },
                observer: true, //监视
                observeParents: true,//监视父盒子发生变化 ---- display:none/block
                on: { //绑定事件
                    touchStart: function () { //当点击到slider时执行
                        console.log(12345)
                    }
                }
            });
            var swiperslides = document.querySelector('.swiper-wrapper')
            swiperslides.onmouseenter = function () { //鼠标移入停止切换
                mySwiper.autoplay.stop()
            },
            swiperslides.onmouseleave = function () { //鼠标离开开始切换
                    mySwiper.autoplay.start()
            }
            var src = $(this).children("img").attr("src")
            console.log("src", src)
            $(".conBox").fadeIn()
            localStorage.setItem("data", 1)
        }
    })

js代码中,涉及到swiper的主要是:1,6,12~33行的代码。

代码分析:

1、第6行的代码,是为了销毁new Swiper()出来的实例。如果实例不销毁,每次从display:none切换到display的样式为block都会创建一个实例,所有的配置都是放在同一个swiper-container类上,产生了滚动的效果的累加。

2、19、20行,是在Swiper上启用动态检查器,如果改变了swiper-container的样式(隐藏/显示)Swiper会重新初始化。observeParents将动态检查器(Mutation Observer)应用于Swiper 的所有祖先元素。当Swiper 的祖先元素发生变化时(show和hide),重新初始化。

3、27~33行,是通过js事件绑定实现鼠标移入/离开滚动效果停止/开始。(在文档中找了半天没有找到对应的事件)

详细文档:www.swiper.com.cn/usage/index…