手机端导航栏滚动案例

window.addEventListener(‘load’, function() {
var ul = this.document.querySelector(’.b-imgs’) //轮播图图片的父元素ul
var box = this.document.querySelector(’.slider’) //装轮播图的大盒子
var ol = this.document.querySelector(’.circle’) //轮播图小圆点
var num = 0
var timer = this.setInterval(function() {
num++;
var value = -box.offsetWidth * num
// console.log(value);
ul.style.transition = ‘all .3s’;
ul.style.transform = “translateX(” + value + “px)”
}, 2000)

// 监听过度完成的事件transitionend
ul.addEventListener('transitionend', function() {
    if (num >= 3) {
        num = 0
        this.style.transition = 'none';
        this.style.transform = 'translateX(0px)'
    } else if (num < 0) {
        num = 2;
        var value = -box.offsetWidth * num
        this.style.transition = 'none';
        this.style.transform = 'translateX(' + value + ')'
    }

    // 小圆点跟随变化
    var li = ol.querySelector('li.current');
    li.classList.remove('current');
    ol.children[num].classList.add('current')
})

// 手指滑动图片
var start_x = 0;
var move_x = 0
var flag = false;
ul.addEventListener('touchstart', function(e) {
    clearInterval(timer)
    start_x = e.targetTouches[0].pageX;
    console.log(start_x);
    flag = false;
})
ul.addEventListener('touchmove', function(e) {
    e.preventDefault(); //阻止滚动屏幕的行为
    move_x = e.targetTouches[0].pageX - start_x;
    var value = -box.offsetWidth * num + move_x;

    this.style.transition = 'none';
    this.style.transform = 'translatex(' + value + 'px)'
    flag = true;
})
ul.addEventListener('touchend', function(e) {
    if (flag) {
        if (move_x < -50) {
            num++;
        } else if (move_x >= 50) {
            num--;
        }
        var value = -box.offsetWidth * num
        this.style.transition = 'all .3s';
        this.style.transform = "translateX(" + value + "px)"
    }
    clearInterval(timer)
    timer = setInterval(function() {
        num++;
        var value = -box.offsetWidth * num
            // console.log(value);
        ul.style.transition = 'all .3s';
        ul.style.transform = "translateX(" + value + "px)"
    }, 2000)
})

})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值