封装轮播图jq

 封装轮播图(pc端)

function banAnimate (target) {
    // 获取元素
    var banner_items = target.children('ul').children();
    var banner_control = target.children('ol');
    var banner_control_items = banner_control.children();
    var all_len = banner_control.children().length;
    // 鼠标移动动画
    banner_control_items.mouseover(function() {
        var index = $(this).index();
        banChange(index);
    })
    // 定时器动画
    var bannerTimer = null, currentIndex = 0;
    bannerTimer = setInterval(function () {
        currentIndex = ++currentIndex > all_len-1 ? 0 : currentIndex;
        banChange(currentIndex)
    }, 2000)
    function banChange (index) {
        banner_items.eq(index).show().siblings().hide();
        banner_control_items.eq(index).addClass('active').siblings().removeClass('active');
    }
    // 定时器动画停止、开启
    target.hover(function () {
        clearTimeout(bannerTimer);
    }, function () {
        bannerTimer = setInterval(function () {
            currentIndex = ++currentIndex > all_len - 1 ? 0 : currentIndex;
            banChange(currentIndex)
        }, 2000)
    })
}
HTML结构
    <div class="banner_pc">
        <!--轮播主体-->
        <ul></ul>
        <!--轮播控制-->
        <ol></ol>
    </div>

封装轮播图(移动端)

function banAnimateMobile (target) {
    // 获取元素
    var banner_wrapper = target.children('ul');
    var banner_control = target.children('ol');
    var banner_control_items = banner_control.children();
    var all_len = banner_control.children().length;

    // 定时器动画
    var bannerTimer = null,
    currentIndex = 0;
    controlIndex = 0;
    bannerTimer = setInterval(function () {
        currentIndex++;
        if (currentIndex > all_len) {
            banner_wrapper.css('marginLeft', 0);
            currentIndex = 1;
        }
        controlIndex = ++controlIndex > all_len - 1 ? 0 : controlIndex;
        banChange(currentIndex)
    }, 2000)

    function banChange(index) {
        banner_wrapper.animate({
            marginLeft: -index*16 + 'rem'
        }, 'fast')
        banner_control_items.eq(controlIndex).addClass('active').siblings().removeClass('active');
    }

    // 手指滑动动画 
    function slideAnimate() {
        var startX = 0;
        var endX = 0;
        target.on('touchstart', function (e) {
            //阻止其他事件
            e.preventDefault();
            //获取当前坐标
            if (e.originalEvent.changedTouches.length == 1) {
                var touch = e.originalEvent.changedTouches[0];
                startX = touch.screenX;
                console.log("startX"+startX)
            }
            //清除定时器  
            clearInterval(bannerTimer); 
        });
        target.on('touchmove', function (e) {
            //阻止其他事件
            e.preventDefault();
            //获取当前坐标
            if (e.originalEvent.changedTouches.length == 1) {
                var touch = e.originalEvent.changedTouches[0];
                endX = touch.screenX;
                console.log("endX" + endX)
            }
        });
        target.on('touchend', function (e) {
            console.log(endX+"----"+startX);
            if (endX > startX) {
                // 右滑
                --currentIndex;
                if (currentIndex < 0) {
                    banner_wrapper.css('marginLeft', -16*all_len + 'rem');
                    currentIndex = all_len-1;

                }
                controlIndex = --controlIndex < 0  ? all_len - 1 : controlIndex;
                banChange(currentIndex)
                console.log('右滑')

            } else {
                //左滑
                // sceneIndex = sceneIndex >= sceneBuilders.length - 1 ? sceneBuilders.length - 1 : sceneIndex + 1;
                // console.log(sceneIndex);
                console.log('左滑');
                currentIndex++;
                if (currentIndex > all_len) {
                    banner_wrapper.css('marginLeft', 0);
                    currentIndex = 1;
                }
                controlIndex = ++controlIndex > all_len - 1 ? 0 : controlIndex;
                banChange(currentIndex)
            }
            // 开启定时器
            bannerTimer = setInterval(function () {
                currentIndex++;
                if (currentIndex > all_len) {
                    banner_wrapper.css('marginLeft', 0);
                    currentIndex = 1;
                }
                controlIndex = ++controlIndex > all_len - 1 ? 0 : controlIndex;
                banChange(currentIndex)
            }, 2000)
        });
    }
    slideAnimate();
}
banAnimateMobile($('.banner-mobile'));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值