Autor Zpráva
Dranel
Profil
Zdravím, mohl by mi někdo poradit, jak se nazývá taková ta JavaScriptová obluda, která vás po kliknutí na odkaz vytáhne nahoru? Nevím, pod jakým klíčovým slovem to hledat, použil jsem tedy Str4wberryho výtah. :-) Líbí se mi například to, co má na webu Jirka...
habendorf
Profil
Dranel:
která vás po kliknutí na odkaz vytáhne nahoru?

To znamená co?
Radek9
Profil
Dranel:
Nevím, jestli to je přesně, ale ta funkce (např. v jQuery) se nazývá scrollTo (či taky scrollTop a scrollLeft).
habendorf
Profil
Aha, reaguji na edit: SmoothScroll?
mckay
Profil
Dranel:
Kdysi jsem to viděl na jednom webu, tak jsem si to z něho vytáhl.

/*
Author: mg12
Update: 2008/11/21
Author URI: http://www.neoease.com/
*/
(function() {

function $(id) {
    return document.getElementById(id);
}

function setStyleDisplay(id, status) {
    $(id).style.display = status;
}

function goTop(acceleration, time) {
    acceleration = acceleration || 0.1;
    time = time || 16;

    var dx = 0;
    var dy = 0;
    var bx = 0;
    var by = 0;
    var wx = 0;
    var wy = 0;

    if (document.documentElement) {
        dx = document.documentElement.scrollLeft || 0;
        dy = document.documentElement.scrollTop || 0;
    }
    if (document.body) {
        bx = document.body.scrollLeft || 0;
        by = document.body.scrollTop || 0;
    }
    var wx = window.scrollX || 0;
    var wy = window.scrollY || 0;

    var x = Math.max(wx, Math.max(bx, dx));
    var y = Math.max(wy, Math.max(by, dy));

    var speed = 1 + acceleration;
    window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));
    if(x > 0 || y > 0) {
        var invokeFunction = "MGJS.goTop(" + acceleration + ", " + time + ")"
        window.setTimeout(invokeFunction, time);
    }
}

function switchTab(showPanels, hidePanels, activeTab, activeClass, fadeTab, fadeClass) {
    $(activeTab).className = activeClass;
    $(fadeTab).className = fadeClass;

    var panel, panelList;
    panelList = showPanels.split(',');
    for (var i = 0; i < panelList.length; i++) {
        var panel = panelList[i];
        if ($(panel)) {
            setStyleDisplay(panel, 'block');
        }
    }
    panelList = hidePanels.split(',');
    for (var i = 0; i < panelList.length; i++) {
        panel = panelList[i];
        if ($(panel)) {
            setStyleDisplay(panel, 'none');
        }
    }
}

window['MGJS'] = {};
window['MGJS']['$'] = $;
window['MGJS']['setStyleDisplay'] = setStyleDisplay;
window['MGJS']['goTop'] = goTop;
window['MGJS']['switchTab'] = switchTab;

})();

function switchImage(imageId, imageUrl, linkId, linkUrl, preview, title, alt) {
    if(imageId && imageUrl) {
        var image = $(imageId);
        image.src = imageUrl;

        if(title) {
            image.title = title;
        }
        if(alt) {
            image.alt = alt;
        }
    }

    if(linkId && linkUrl) {
        var link = $(linkId);
        link.href = linkUrl;
    }
}
A použiješ to takto:
<a href="#" onclick="MGJS.goTop();return false;" >Nahoru</a>
Dranel
Profil
mckay:
Není to trochu moc dlouhý na to, že to má jen odscrolovat nahoru? :-)
ah01
Profil
Dranel:
To scrolování je v podstatě jen ta fce. goTop.
Dranel
Profil
Díky, funguje docela hezky. Možná jen... co má kde změnit, aby byl o kousíček plynulejší začátek a o trochu svižnější konec? Doufám, že jde jen o přepsání nějakých čísel, jinak to neřeště. ;-) Mimochodem kdybyste někdo znal další podobné scripty, podělte se. :-)

Tak jsem si pár scriptů přes KW 'Smooth Scroll' našel, některé se mi i zalíbily. Co mě ovšem udivuje je to, že žádný, pokud vím, nedokáže odrolovat zpět po stisknutí tlačítka 'Zpět' v prohlížeči - normální anchory se tak chovají. Nevíte, čím to? Je to tak těžké na naprogramování?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0