分享一下成功了的js代码~~

来源:6-1 动画函数

努力的开发人员

2016-06-18 10:52

window.onload = function () {
    var container = document.getElementById('container');
    var list = document.getElementById('list');
    var buttons = document.getElementById('buttons').getElementsByTagName('span');
    var prev = document.getElementById('prev');
    var next = document.getElementById('next');
    var index = 1;

    /**
     * 左右切换函数
     * @param offset 左右的偏移量
     */
    var offsetL = 0;
    function animate(offset) {
        var oldLeft = parseInt(list.style.left);
        var newLeft = oldLeft + offset;
        offsetL = oldLeft;
        var interval = null;
        var intervalNum = 10;

        //console.log('offsetL: ' + offsetL);
        //console.log('newLeft: ' + newLeft);

        // 向左切换动画
        if((offset > 0) && (offsetL < newLeft)) {
            //console.log('左');
            interval = setInterval(function () {
                offsetL += offset/(300/intervalNum); // 300为移动的总时间

                //console.log(offsetL);

                list.style.left = offsetL + 'px';

                if(offsetL == newLeft) {
                    clearInterval(interval);

                    // 两个if语句实现了无限滚动
                    if(newLeft > -600) {
                        list.style.left = -3000 + 'px';
                    }

                    if(newLeft < -3000) {
                        list.style.left = -600 + 'px';
                    }
                }
            }, intervalNum);
        }

        // 向右切换动画
        if((offset < 0) && (offsetL > newLeft)) {
            //console.log('右');
            interval = setInterval(function () {
                offsetL -= -offset/(300/intervalNum); // 300为移动的总时间

                //console.log(offsetL);

                list.style.left = offsetL + 'px';

                if(offsetL == newLeft) {
                    clearInterval(interval);
                    // 两个if语句实现了无限滚动
                    if(newLeft > -600) {
                        list.style.left = -3000 + 'px';
                    }

                    if(newLeft < -3000) {
                        list.style.left = -600 + 'px';
                    }
                }
            }, intervalNum);
        }
    }

    /**
     * 小圆点切换函数
     */
    function buttonsCtrl() {
        for(var i = 0;i < buttons.length;i++) {
            if(buttons[i].className == 'on') {
                buttons[i].className = '';
            }
        }
        buttons[index - 1].className = 'on';
    }


    // 左右切换的功能
    next.onclick = function () {
        if(index == 5) {
            index = 1;
        }else {
            index++;
        }
        buttonsCtrl();

        animate(-600);
    };

    prev.onclick = function () {
        if(index == 1) {
            index = 5;
        }else {
            index--;
        }
        buttonsCtrl();

        animate(600);
    };

    /**
     * 点击小圆点切换焦点图
     */
    for(var i = 0;i < buttons.length;i++) {
        buttons[i].onclick = function () {
            if(this.className == 'on') {
                return; // 后面的语句不会再执行了,一直到buttonCtrl()都不会再执行
            }
            var myIndex = this.getAttribute('index');
            var offset = -600 * (myIndex - index);
            animate(offset);

            // index 更新到最新
            index = myIndex;

            // 小圆点变成橙色
            buttonsCtrl();
        };
    }
};


写回答 关注

2回答

  • 雨后的芭蕉
    2016-07-25 19:52:49

    在,求帮忙?

  • 慕仙3167342
    2016-06-22 14:49:48

    直接下载源代码不久好了?

    共 1 条回复 >

焦点图轮播特效

通过本教程学习您将能掌握非常实用的焦点图轮播特效的制作过程

65279 学习 · 611 问题

查看课程

相似问题