powy1993 / fullpage

For desktop(ie5.5+) or mobile webApp without jQuery,create full screen pages fast and simple.
http://1.fullpagechris.sinaapp.com/index.html
749 stars 267 forks source link

想个关于steps的问题 #25

Closed semi-xi closed 8 years ago

semi-xi commented 8 years ago

1.假设我在page2的时候设置steps3 如果我滑动到page3的时候 这个时候是已经执行完了3个steps的。 但是如果我从page3返回到page2的时候。这个是从steps3开始的。按照steps3-stpes2-steps1的顺序。 有没有一个参数设置是 我只要从下一页返回到上一页的时候,就从stpes0开始的。

实际上我想要的效果是每次到达一页都是从stpes0开始。而不是从steps最后一个这样慢慢返回

  1. 这个不知道算不算是bug。如果我写了steps=4的话(假设是4),实际上的话当我进入到这个page的时候,他就已经显示stpes1了,而不是我再次滑动才去触发stpes1,因为这样要触发4次才能完成,加上首次加载的话一共就有5次了
powy1993 commented 8 years ago

已经增加了一个 data-step-restart 属性 设置为0 就是从0开始

semi-xi commented 8 years ago

那样来了个奇葩需求来了。我点击测导航的时候才是从0开始,如果仅仅是从鼠标滚动的这样的方式的话还是按照原来倒序上去的办法,那样我是在点击的时候才去动态增加那个data-step-restart 还是怎么样

powy1993 commented 8 years ago

源码 508 行 修改成 if (arguments[1]) resetStep();

semi-xi commented 8 years ago

试了下,好像不是很行,而且这样的话就恢复到原来的样子了。

powy1993 commented 8 years ago

// 456行 goPage = function(to) {

    var fix = _fix,
        indexOld,
        _effectNow,
        _isNavBar;

    if (options.beforeChange) {
        if (options.beforeChange(indexNow, page[indexNow]) === 'stop') {
            return;
        }
    }

    if (_isLocked                           // make sure translate is already
        || to === indexNow) return;         // don't translate if thispage

    if (options.continuous) {
        to = roundPage(to, 1);
    } else {
        if (to >= pagelen 
            && stepNow[indexNow] >= stepArr[indexNow] 
            || to < 0 
            && stepNow[indexNow] === 0) return;
    }

    _isLocked = true;
    _isNavBar = arguments[1];

    if (!_isNavBar && !checkStep(to - indexNow)) {
        return setTimeout(function() {
            _isLocked = false;
        }, sTime);
    }

    for (_effectNow in effect) {
        resetAndRun[_effectNow](effect[_effectNow], indexNow, to);
    }

    fix += browser.cssCore === '' ? 20  : 0 ;
    indexOld = indexNow;
    indexNow = to;
    if (_isNav) navChange(indexOld, indexNow);
    setTimeout(function() {
        // fix for bug in ie6-9 about z-index
        page[to].className += ' slide'; 
    }, fix);

    setTimeout(function() {

        pageStyle[to][browser.cssCore + 'TransitionDuration'] = sTime + 'ms';
    }, 20);

    setTimeout(function() {

        if (_isNavBar)resetStep();
        replaceClass(page[indexOld], 'current', '');
        replaceClass(page[indexNow], 'slide', 'current');

        if (options.callback) {
            options.callback(indexNow, page[indexNow]);
        }

        _isLocked = false;
    }, sTime + _fix + 120);

}

// 521行

semi-xi commented 8 years ago

有联系方式么,还有一个问题想请教的,顺便我在你的代码的beforeChange,callback加上了form,to的参数