Ostatnia aktualizacja: czerwiec 2026, poniższe wskazówki oraz kod IntersectionObserver / reduced-motion dotyczą PrestaShop 8 i 9 (Hummingbird oraz Classic). Uwagi o dostępności uwzględniają obowiązujący już Europejski Akt o Dostępności.

Animacje podczas przewijania, elementy, które pojawiają się płynnie, wysuwają w górę albo powiększają na właściwe miejsce, gdy użytkownik przewija stronę, stawiają właściciela sklepu w niewygodnej sytuacji. Na stronie głównej lub stronie marki sprawiają, że sklep wydaje się dopracowany i żywy; w siatce produktów albo podczas realizacji zamówienia dodają pół sekundy efektu „gdzie zniknął mój przycisk?”, który kosztuje Cię zamówienia. Sztuka nie polega na tym, żeby wiedzieć, jak je dodać. Sztuka polega na tym, żeby wiedzieć, gdzie w sklepie PrestaShop naprawdę na siebie pracują, gdzie po cichu obniżają konwersję i jak dodać je bez obciążania wyniku PageSpeed. Ten poradnik dotyczy właśnie tej decyzji w sklepie PrestaShop, szablonów, miejsc w panelu administracyjnym i budżetu wydajności, którego trzeba pilnować.

Jeśli Twoim właściwym celem jest to, żeby własny kod front-endowy przetrwał aktualizacje motywu, to jest to osobny (i ważny) temat, omawiamy go w poradniku własny CSS i JavaScript w PrestaShop bez psucia aktualizacji. Tutaj zakładamy, że decyzja o dodaniu ruchu już zapadła i chcesz zrobić to poprawnie.

Gdzie animacje podczas przewijania mają sens, a gdzie kosztują Cię zamówienia

PrestaShop to platforma transakcyjna, nie strona portfolio. Uczciwa zasada brzmi: animuj strony, na których odwiedzający ogląda ofertę albo daje się przekonać, nigdy te, na których kupuje albo porównuje. W przełożeniu na konkretne kontrolery i szablony, które będziesz edytować, wygląda to tak:

Obszar PrestaShopKontroler / szablonAnimować?Dlaczego
Strona głównaIndexController / index.tplTak, oszczędnieTo jedyna strona, która opowiada historię marki; pojawianie się sekcji wygląda jak dopracowanie, a nie opóźnienie.
Strony CMS (O nas, marka, lookbook)CmsController / cms.tplTakTo treści redakcyjne; ruch nadaje im niemal filmowy charakter bez szkody dla sprzedaży.
Kategoria / lista produktówCategoryController / catalog/listing/category.tpl, product-list.tpl (+ partiale miniaturek)NieKlienci skanują siatkę. Animowanie kart w momencie wejścia w widok zamienia szybkie przeglądanie w czekanie.
Strona produktuProductController / product.tplNie (cena/koszyk/zdjęcia)Cena, dodanie do koszyka i galeria muszą być natychmiastowe. Ich opóźnianie to tarcie dokładnie w momencie decyzji.
Realizacja zamówieniaOrderController / checkout/*.tplNigdyKażda milisekunda tutaj to potencjalnie utracone zamówienie. Zero animacji, bez wyjątków.

Co to oznacza w praktyce? Pokusa jest prosta: włączyć bibliotekę typu „animuj wszystko” dla całego motywu i podziwiać efekt na swoim komputerze. Zadanie właściciela sklepu jest odwrotne: ograniczyć animacje wyłącznie do strony głównej i szablonów CMS oraz jednoznacznie wykluczyć szablony, w których klienci podejmują decyzję i płacą. Siatka kategorii, która zwleka z pokazaniem produktów, nie wygląda jak rozwiązanie premium, wygląda jak zepsuta na wolnym połączeniu.

Test rzeczywistości mobilnej

W większości sklepów PrestaShop ponad połowa ruchu pochodzi z telefonu, i właśnie tam animacje podczas przewijania najczęściej się psują. To, co na MacBooku jest aksamitnie płynne, na trzyletnim Androidzie bywa rwane. Testuj na prawdziwym sprzęcie ze średniej półki, nie na komputerze deweloperskim, i traktuj urządzenia mobilne jako powód, by robić mniej, a nie miejsce do popisu. Responsywne motywy PrestaShop już same mocno przebudowują układ na małych ekranach; dokładanie animacji do takiego przeliczania układu to prosta droga do szarpanego przewijania.

Typy animacji, które pasują do sklepu internetowego

  • Płynne pojawienie się. Przezroczystość 0 → 1. Najbezpieczniejszy efekt, odpowiedni dla każdego bloku treści. Jeśli wybierasz tylko jeden, wybierz właśnie ten.
  • Wysunięcie w górę. Element unosi się o 20–30px, jednocześnie się pojawiając. Daje odrobinę głębi; dobre dla opinii klientów albo kart funkcji na stronie głównej.
  • Sekwencyjne odsłanianie. Każdy element w rzędzie animuje się chwilę po poprzednim, tworząc kaskadę. Zostaw to dla starannie dobranego bloku na stronie głównej, ręcznie wybranego rzędu „polecanych” elementów, nigdy dla siatki kategorii, gdzie tylko spowalnia skanowanie.
  • Paralaksa. Tło porusza się z inną prędkością niż pierwszy plan. Może robić wrażenie w pojedynczej sekcji hero albo sekcji opowiadającej historię marki, ale jest kosztowna wydajnościowo i często powoduje problemy na urządzeniach mobilnych. Maksymalnie jedna sekcja na stronę i koniecznie test na telefonie przed wdrożeniem.

Zasady projektowe, które utrzymują efekt w ryzach

Różnica między efektem „dopracowanym” a „irytującym” leży w ustawieniach, nie w samej technice:

  • Subtelność. Jeśli odwiedzający świadomie zauważa animację, jest jej za dużo. Elementy powinny sprawiać wrażenie, że pojawiły się naturalnie, a nie odegrały przedstawienie.
  • Szybkość. 200–400 ms to najlepszy zakres. Szybciej daje wrażenie responsywności; wolniej zaczyna wyglądać jak opóźnienie. Nigdy nie przekraczaj 600 ms, nikt nie powinien czekać, aż strona skończy się ruszać, zanim będzie mógł ją przeczytać.
  • Tylko raz. Animuj element przy pierwszym wejściu w widok, a potem zostaw go w spokoju. Ponowne animowanie za każdym razem, gdy klient przewinie stronę z powrotem, to najczęstszy sposób, by dobry efekt zaczął wyglądać tanio.
  • Szacunek dla preferencji ruchu. Część odwiedzających ustawia prefers-reduced-motion na poziomie systemu operacyjnego (często z powodu zaburzeń przedsionkowych). Uszanuj to, i pamiętaj, że unijne przepisy o dostępności oczekują, że Twój sklep pozostanie w pełni użyteczny także dla takich osób.

Wydajność i dostępność: rzeczy nienegocjowalne

To właśnie tutaj większość samodzielnych prób dodania animacji podczas przewijania bardziej szkodzi sklepowi PrestaShop, niż pomaga. O tym, czy animacja jest tania, czy droga, decydują dwie techniczne realności:

Animuj wyłącznie opacity i transform. Te dwie właściwości obsługuje kompozytor przeglądarki, nie wymuszają ponownego przeliczania układu strony, więc główny wątek zostaje wolny dla reszty zadań. Animowanie width, height, top, left, margin albo padding wymusza ponowne przeliczenie układu w każdej klatce, a na ciężkiej od treści stronie kategorii PrestaShop to dokładnie ten koszt, który objawia się przycięciami.

Używaj Intersection Observer, nigdy obsługi zdarzenia przewijania. Naiwne window.addEventListener('scroll', ...) uruchamia się dziesiątki razy na sekundę i konkuruje z własnymi skryptami front-endowymi PrestaShop (koszykiem, ajaxem wyszukiwania fasetowego, karuzelą). Intersection Observer uruchamia się dopiero wtedy, gdy element faktycznie przecina granicę widoku, więc jest i poprawny, i tani.

W dostępności minimum jest proste: nigdy nie ukrywaj kluczowej treści za animacją zależną od JavaScriptu, jeśli skrypt się nie załaduje, treść (a zwłaszcza cena i przycisk zakupu) nadal musi być dostępna. Nie animuj tekstu, gdy czytnik ekranu może go odczytywać, i unikaj migania oraz szybkiego ruchu. Europejski Akt o Dostępności traktuje animacje, które blokują albo utrudniają dostęp do treści, jako problem zgodności, a nie kwestię stylistyczną.

Dwie reguły CSS, które wykonują najważniejszą pracę

Poprawne, lekkie płynne pojawienie się to głównie CSS, JavaScript dodaje tylko jedną klasę, gdy element wchodzi w widok. Poniższy wzorzec animuje wyłącznie opacity i transform, a do tego zawiera zabezpieczenie prefers-reduced-motion, które utrzymuje Cię po właściwej stronie dostępności. To czysty CSS, bez biblioteki:

/* hidden state: paint it, but offset and transparent */
.mpr-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .35s ease, transform .35s ease;
}

/* JS adds .is-visible when the element scrolls into view */
.mpr-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* respect the visitor's OS-level motion preference */
@media (prefers-reduced-motion: reduce) {
  .mpr-reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

A oto observer, który przełącza klasę tylko raz, a potem przestaje obserwować element, zwróć uwagę na wywołanie unobserve, bo to właśnie ono pozwala uszanować zasadę „animuj tylko raz” bez zostawiania aktywnej obsługi zdarzeń:

const io = new IntersectionObserver((entries, obs) => {
  entries.forEach((entry) => {
    if (entry.isIntersecting) {
      entry.target.classList.add('is-visible');
      obs.unobserve(entry.target);
    }
  });
}, { threshold: 0.15 });

document.querySelectorAll('.mpr-reveal').forEach((el) => io.observe(el));

Wyślij ten JS jako zewnętrzny plik zarejestrowany przez hook zasobów modułu, nie jako inline <script> w szablonie, z powodów opisanych w poradniku o własnym CSS/JS powyżej. Ogranicz klasę .mpr-reveal wyłącznie do strony głównej i szablonów CMS, dokładnie tak, jak wskazuje tabela.

Trzy sposoby dodania animacji podczas przewijania do PrestaShop

ŚcieżkaNakład pracyPrzetrwa aktualizację motywu?Najlepsza, gdy…
Ręczne zakodowanie w motywie potomnymCzas deweloperaChronione, ale sprawdź po aktualizacjach motywu nadrzędnego/rdzeniaMasz dewelopera i chcesz pełnej kontroli. Nigdy nie edytuj bezpośrednio motywu nadrzędnego.
Lekka biblioteka (np. AOS)Niski, dodajesz skrypt, oznaczasz elementy przez data-aosZależy. Trzeba ponownie zastosować po każdej zmianie motywuNie przeszkadza Ci edycja plików szablonu i chcesz szybkiego efektu.
Moduł w panelu administracyjnymInstalacja & konfiguracja, bez koduTak, niezależnie od motywuChcesz sterować animacją każdego elementu bez dewelopera i bez edycji szablonów.

Pierwsza ścieżka wymaga jednego ostrzeżenia, na którym potyka się wielu sprzedawców: jeśli edytujesz pliki motywu, żeby dodać skrypt i CSS, rób to w motywie potomnym, inaczej następna aktualizacja motywu po cichu wszystko usunie. Dokładnie wyjaśniamy dlaczego i jak w poradniku motywy potomne w PrestaShop: dlaczego nigdy nie należy edytować motywu nadrzędnego. Unikaj też ciężkich narzędzi, pełne frameworki, takie jak GSAP czy Anime.js, dodają 30–60 KB JavaScriptu dla możliwości, których sklep nigdy nie wykorzysta; podstawowy efekt pojawienia się i przesunięcia nie uzasadnia takiej wagi na stronie prowadzącej do zakupu.

Jedna powiązana mikrointerakcja, którą warto objąć zakresem przy tej samej pracy, bo należy do tej samej rodziny Intersection Observer: przycisk powrotu do góry, który pojawia się po przewinięciu pierwszego ekranu. To rzadki przykład ruchu uruchamianego przewijaniem, który jest mile widziany na każdej stronie, bo usuwa tarcie zamiast je dodawać.

Gdzie pasuje moduł Scroll Animations

Ustawienia Scroll Animations w panelu administracyjnym z przełącznikiem włączania, listą rozwijaną typu animacji ustawioną na fade up, polami opóźnienia i czasu trwania animacji w milisekundach oraz polem selektorów CSS

Ustawienia animacji przewijania pokazują przełącznik włączania, listę rozwijaną typu animacji, pola opóźnienia i czasu trwania oraz pole selektorów CSS.

Ścieżka z modułem istnieje dla właściciela sklepu, który chce, żeby strona główna wyglądała na dopracowaną, ale nie chce tworzyć forka motywu ani ręcznie pisać kodu Intersection Observer, który rozsypie się przy następnej aktualizacji. Nasz moduł Scroll Animations dodaje konfigurowalne efekty pojawienia się, przesunięcia i zoomu do dowolnego elementu z poziomu panelu administracyjnego. Opiera się na natywnym IntersectionObserver i nie ma zewnętrznych zależności, więc nie dociąga 30-kilobajtowego frameworka na Twoje strony. Co Ci to daje? Kontrolujesz czas trwania, punkt uruchomienia i efekt dla każdego elementu z poziomu administracji zamiast zlecać to deweloperowi; logika animacji znajduje się w module, nie w motywie, więc aktualizacja motywu jej nie usunie; a ponieważ bazuje na opacity i transform obsługiwanych przez kompozytor, jest zaprojektowany tak, by chronić wynik PageSpeed, a nie go zużywać.

Niezależnie od wybranej ścieżki dyscyplina jest taka sama, i to właśnie ją pomijają poradniki dla osób wdrażających takie efekty samodzielnie: ogranicz ruch do stron, które przekonują, nie dodawaj go na stronach, które sprzedają i pobierają płatność, animuj wyłącznie opacity oraz transform i przetestuj wszystko na prawdziwym telefonie, zanim uznasz pracę za skończoną. Animacja podczas przewijania powinna sprawić, że odwiedzający poczuje, że strona żyje. Nigdy, że musi czekać, aż przestanie się ruszać, zanim będzie mógł kupić.

Najczęściej zadawane pytania

Gdzie w sklepie PrestaShop można bezpiecznie używać animacji podczas przewijania?

Animuj strony, na których odwiedzający przegląda ofertę albo daje się przekonać, stronę główną (oszczędnie) i strony CMS, takie jak O nas czy lookbook. Nie dodawaj ruchu na listach kategorii, stronach produktów i podczas realizacji zamówienia, gdzie klienci skanują, decydują i płacą. Siatka kategorii, która zwleka z pokazaniem produktów, wygląda jak uszkodzona, nie jak dopracowana, a każde opóźnienie przy realizacji zamówienia bezpośrednio ryzykuje utratę sprzedaży.

Dlaczego wszyscy upierają się przy IntersectionObserver zamiast obsługi scroll?

Obsługa zdarzenia scroll uruchamia się dziesiątki razy na sekundę i konkuruje z własnymi skryptami front-endowymi PrestaShop, koszykiem, ajaxem wyszukiwania fasetowego, karuzelą. IntersectionObserver uruchamia się tylko wtedy, gdy element faktycznie wchodzi w widok, więc jest jednocześnie poprawny i tani. Upraszcza też zasadę „animuj raz”: wywołaj unobserve na elemencie po jego odsłonięciu, a przeglądarka całkowicie przestanie go obserwować.

Które właściwości CSS można bezpiecznie animować?

Tylko opacity i transform. Obie obsługuje kompozytor przeglądarki i nie wymuszają ponownego przeliczania układu, więc główny wątek zostaje wolny. Animowanie width, height, top, left, margin albo padding wymusza ponowne przeliczenie układu w każdej klatce, a na ciężkiej od treści stronie kategorii dokładnie ten koszt widać jako przycięcia.

Czy muszę obsługiwać prefers-reduced-motion?

Tak, i wystarczy jedna media query, pokazana w powyższym fragmencie. Część odwiedzających ustawia prefers-reduced-motion: reduce na poziomie systemu operacyjnego, często z powodu zaburzeń przedsionkowych. Uszanowanie tego nie jest tylko uprzejmością: Europejski Akt o Dostępności traktuje animacje utrudniające dostęp do treści jako problem zgodności. W tej media query ustaw element w stanie widocznym bez przejścia, aby pojawił się natychmiast.

Czy biblioteka taka jak AOS albo GSAP to dobry pomysł?

AOS to rozsądny szybki wybór, jeśli nie przeszkadza Ci oznaczanie elementów przez data-aos w motywie potomnym. Unikaj ciężkich narzędzi, GSAP i Anime.js dodają 30–60 KB JavaScriptu dla możliwości, których sklep nigdy nie wykorzysta, a podstawowe pojawienie się z przesunięciem nie uzasadnia takiej wagi na stronie prowadzącej do zakupu. Powyższy wzorzec z czystym IntersectionObserver ma kilka linii i nie niesie żadnego kosztu frameworka.

Czy animacje podczas przewijania pogorszą mój wynik PageSpeed?

Nie muszą. Zrobione poprawnie, tylko opacity i transform, IntersectionObserver, ograniczenie efektu do kilku szablonów i rezygnacja z ciężkich frameworków, mają pomijalny koszt. Zaczynają szkodzić, gdy włączasz bibliotekę typu „animuj wszystko” w całym motywie, animujesz właściwości wymuszające zmianę układu albo ładujesz 30-kilobajtowy framework animacji dla jednego efektu. Ogranicz zakres i testuj na prawdziwym telefonie ze średniej półki.

Dlaczego animacja zacina się na telefonach, a na laptopie jest płynna?

Bo ponad połowa ruchu pochodzi z urządzeń mobilnych i to właśnie tam animacje tracą płynność. Trzyletni Android ma znacznie mniejszy zapas mocy niż komputer deweloperski, a responsywne motywy PrestaShop już same mocno przebudowują układ na małych ekranach, dokładanie animacji do takiego przeliczania układu powoduje szarpanie. Traktuj urządzenia mobilne jako powód, by robić mniej: mniej animowanych elementów, żadnej paralaksy i zawsze weryfikacja na prawdziwym sprzęcie ze średniej półki.

Powiązane poradniki

Tagi: PrestaShop UX
Udostępnij ten wpis:
David Miller

David Miller

Założyciel, mypresta.rocks

David Miller to specjalista PrestaShop z ponad dekadą praktycznego doświadczenia i założyciel mypresta.rocks, studia programistycznego z Tychów. Tworzy i utrzymuje katalog 152 modułów PrestaShop, w tym 21 pakietów „Revolution" obejmujących SEO, checkout, bezpieczeństwo, wydajność, marketing, wyszukiwanie, wsparcie i operacje magazynowe, które każdego dnia usprawniają realne sklepy, testowanych na PrestaShop 1.7.8, 8.x i 9.x. Sprawuje również opiekę nad sklepami produkcyjnymi generującymi miliony rocznego obrotu, dlatego jego pracę ocenia się po realnej sprzedaży, a nie po wersjach demo. Jego doświadczenie obejmuje pełen zakres e-commerce, wydajność, bezpieczeństwo, SEO i marketing, oraz wykracza poza PrestaShop, sięgając WooCommerce, Shopify i systemów tworzonych na zamówienie. Na blogu pisze o technicznej stronie PrestaShop: co platforma naprawdę robi pod maską, co psuje się na produkcji i które rozwiązania faktycznie się sprawdzają.

Komentarze

Brak komentarzy. Bądź pierwszy!
Spodobał Ci się ten artykuł?

Otrzymuj nasze najnowsze porady, przewodniki i aktualizacje modułów prosto na swoją skrzynkę.

Możesz zrezygnować w każdej chwili. W tym celu należy odnaleźć szczegóły w naszej informacji prawnej.

Ładowanie...
Do góry