logo
12.08.2019 11:49
1
V JS nejsem rozený a úplně nevím, jak tenhle problém vyřešit dobře. Mám tuhle knihovnu https://www.cssscript.com/cross-plat...re-javascript/.

Problém je, že na Macu s MagicMouse a TrackPad existuje něco jako na mobilu (iOS / Android) Kinetic / Inertia scrolling (setrvačný scroll).

Tudíž při scrollu na webu (a při použítí MagicMouse a TrackPad) se to aktivuje a když neudělám malý scroll ale velký, tak mi to přeskočí 2+ sekcí (záleží jak moc uživatel scrollovat na tom zařízení).

Výsledek má být takový, že má skočit jen o jednu sekci.

Napadlo mě použít časovač, tj. že JS počítá čas od poslední akce a zruší další akci pokud předchozí nastala před méně než 3 000 ms (to je čas k dokočení animace od předchozího k novému slidu).

To mi nevyšlo ... nějaký nápad ???

Co se právě děje na Webtrhu?

18.08.2019 00:18
2
Původně odeslal Doctore97
Napadlo mě použít časovač, tj. že JS počítá čas od poslední akce a zruší další akci pokud předchozí nastala před méně než 3 000 ms (to je čas k dokočení animace od předchozího k novému slidu).

To mi nevyšlo ... nějaký nápad ???
Problém nejspíše máte s tím, že i po N ms touchpad, či jiné zařízení kterým scrollujete, stále odesílá události, i pokud uživatel již dávno nic nedělá. Takže nejspíše budete chtít ignorovat události které negeneruje přímo uživatel... k tomu slouží třeba Lethargy - https://github.com/d4nyll/lethargy .

Zkusil jsem si to implementovat do oné knihovny a výsledek je zde: http://demos.miroslavfoltyn.com/fullscreen/
Nemůžu to aktuálně otestovat na velkém množství zařízení, ale touchpad a mobil to zvládá v pohodě, i kdyby byl problém, nejspíše byste jej vyřešil vhodnými parametry pro Lethargy.

Jestli chcete vidět, které změny jsem provedl, udělejte si diff k nejnovější verzi https://github.com/amendoa/fullPageScrollPureJS .

Doplnil jsem to do toho nějak nahrubo, nekteré metody jsou nyní zbytečné.
18.08.2019 00:52
3
Super, koukal jsem na lethargy ale nepodařilo se mi implementovat správně. Moc díky, implementoval jsem a funguje skvěle.