Kursor szyty na miarę

Pomysł opiera się na elemencie <span class="cursor"></span>, który stale podąża za wskaźnikiem myszy. JavaScript monituje położenie kursora wewnątrz <div class="cursor_area"></div> i steruje wartościami „left” oraz „top”.

Zobacz demo

Niech zadziała

Podstawowym zdarzeniem jakie nas interesuje jest oczywiście mousemove. Przy pomocy zwracanych wartości pageXpageY a także offset().left i offset().top możemy w łatwy sposób wyznaczyć położenie kursora wewnątrz boksu. Odległość o górnej krawędzi relatywnie do okna przeglądarki będzie wynosiła pageY - offset().top i analogicznie od lewej pageX - offset().left.

Każdy boks ma ustawiony cursor:none – dzięki czemu domyślny kursor jest niewidoczny. Do animacji wykorzystujemy możliwości @keyframes, selektorów :hover i :active i paru prostych sztuczek z przekształceniami – wszystko w zależności od potrzeb i wyobraźni. Przygotowując taki kursor na stronę nie mamy właściwie żadnych ograniczeń, a to przecież cenimy najbardziej.

Problem z warstwami

Ponieważ ikonka kursora jest elementem blokowym pływającym nad treścią strony, przykrywa inne elementy blokując interakcję kliknięcia. Jak w takim razie umożliwić klikanie w linki i inne elementy pod kursorem? Na nic byłyby wszystkie starania, gdyby nie było do dyspozycji właściwości pointer-events w CSS. Ustawienie jej wartości none pozwala wyłączyć na nim wszystkie zdarzenia myszy.