Tło poruszające się za kursorem myszy

Czas czytania: 2 minut

Tematem jaki tym razem chce poruszyć jest tło poruszające się za kursorem myszy. W praktyce końcowym efektem będzie tło będzie podrożało podążające za ruchem myszki odsłaniając lub chowając fragmenty obrazu, zdjęcia lub grafiki umieszczonej w tle. Efekt ten można użyć jako np. tło elementu lub całej sekcji strony.

Przejdźmy zatem do pracy.

Budujemy strukturę pod ruchome tło

Jak praktycznie zawsze zaczynamy od budowy podstawy w moim przypadku będzie ona oparta o HTML (a następnie rozbudowana). Dlatego pokażę tutaj jedynie część wspólną kodu. Tak wiec zaczniemy ją od deklaracji kontenera, w którym będziemy umieszczać ruchome tło.

 <div class="moveContainer" id="moveContainer"></div>

W moim przykładzie kontener z mobilnym tłem nie będzie mieć zawartości, przynajmniej na razie by nie odwracała ona uwagi od samego efektu. Dodatkowo kod będzie bardziej czytelny.

W kolejnym kroku dodam do mojego nowego kontenera tło. Na początek oczywiście będzie to zwykłe tło, grafika nad, którą w kolejnych etapach posłuży do uzyskania efektu.

.moveContainer{
    background-image: url(bg-image.jpg);
}

To oczywiście tylko fragment ostatecznego kodu. W końcu kontener trzeba będzie też ustawić. Na chwilę obecną nie ma on bowiem nadanej wysokości. W praktyce więc jest płaski i nic się nam nie wyświetli.

warto przeczytać -> Jak umieścić grafikę w tle strony

Ruchome tło w JavaScript

Teraz pra na kod JS, dodający animacje.

const el = document.querySelector("#moveContainer");

el.addEventListener("mousemove", (e) => {
  el.style.backgroundPositionX = -e.offsetX + "px";
  el.style.backgroundPositionY = -e.offsetY + "px";
});

Po złożeniu kodu otrzymałam:

Ruchome tło JS + CSS

Istnieje też możliwość ograniczenia działania JS (javaScript) i częściowe zastąpienie go CSS. W takiej sytuacji kod będzie trochę się różnił od tego co umieściłam powyżej:

Po pierwsze skrócimy kod JS do minimum:

const el = document.querySelector("#moveContainer");

el.addEventListener("mousemove", (e) => {
  el.style.setProperty('--x', -e.offsetX + "px");
  el.style.setProperty('--y', -e.offsetY + "px");
});

Następnie dodamy nowe parametry do kodu CSS:

.moveContainer{
  --x: 0px;
  --y: 0px;
  background-image: url(bg-image.jpg);
  background-position: var(--x) var(--y);
}

Jak widać pojawiło się tutaj kilka ciekawych właściwości CSS, które na co dzień rzadko lub w ogóle nie są używane. Odpowiadają one za pozycjonowanie grafiki w kontenerze.

Źródła:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*Wyrażam zgodę na przechowywanie i przetwarzanie moich danych na potrzeby umieszczenia mojego komentarza.
*W przypadku gdy treść komentarza narusza prawo Polskie i dobro oraz uczucia innych osób Administrator, zachowuje prawo nie publikowania go