Wątek przeniesiony 2024-05-15 13:55 z JavaScript przez Riddle.

zmiana podglądu obszaru na stronie

0

Drodzy Forumowicze!

Próbuję zrobić rzadko spotykaną funkcjonalność strony internetowej. Chciałbym uzyskać poruszanie się po ekranie, podobnie jak jest to zrealizowane w przypadku przeglądarkowej wersji Google Maps. Trzymając lewy przycisk myszy, możemy przemieszczać się po stronie a scrollem możemy przybliżać i oddalać dany obszar, który byłby jakimś układem współrzędnych do osadzania elementów. Nie udało mi się nazwać tego przypadku aby znaleźć przykłady w sieci. Prawdopodobnie wystarczy mi Wasza wskazówka, abym mógł zgłębić temat.

Z góry dziękuję za zaangażowanie.

1

Jeżeli to jest zwykła strona internetowa, a nie jakaś appka właśnie z mapami, grami itd - to generalnie nie rób tego. Nie psuj tego, do czego użytkownicy są przyzwyczajeni. Nie utrudniaj zaznaczania tekstu (taki będzie skutek uboczny), nie utrudniaj korzystania ze strony osobom ograniczonym ruchowo, wzrokowo, itd. No i musisz dopilnować, żeby Twoje specjalne obsługiwanie myszy nie zepsuło dotyku (przeglądarki przez dotyk emuluje zdarzenia myszy poza zdarzeniami dotyku).

Ogólnie sprawa jest prosta - po wciśnięciu przycisku - zapisz koordynaty myszy
Wraz z przesuwaniem myszy zmieniaj scrollTop elementu ze scrollem (zwykle body, ale użyj https://developer.mozilla.org/en-US/docs/Web/API/Document/scrollingElement chyba, że masz jakieś dodatkowe divy i faktycznie scrollowany jest inny element)
Przy puszczeniu myszy zakończ efekt.

Nie będzie idealnie - nie będzie efektu przyśpieszenia, tj. jeżeli podczas ruchu myszą puścisz przycisk, to strona jeszcze przez jakiś czas "leci" i zwalnia.

Jest taki plugin do jQuery, który robi dokładnie to, ale potrzebujesz specjalnie owrapować element i nie wiem czy wspiera to widoczny scrollbar (przydałoby się, jeżeli ponownie - zamierzasz popełnić to na normalnej stronie, a nie elemencie typu mapa): https://davetayls.github.io/jquery.kinetic/

Zrobiłem 100 lat temu wersję bez jQuery, ale miała buga, którego nigdy nie naprawiłem, a potem autor wersji jQuery robił jeszcze jakieś zmiany, za którymi nie podążałem.

Dla reacta poleciłbym https://www.npmjs.com/package/react-zoom-pan-pinch

Ale ponownie - nie rób tego na normalnej stronie.

0

Jeśli zamierzasz tak robić, to sprawdź też jak to będzie działać na co najmniej dwóch telefonach (iOS, Android).

0

@dzek69: Dziękuję za wyjaśnienie i szersze spojrzenie na temat. Rzeczywiście, można w ten sposób zepsuć pozostałe funkcje strony. Wydaje mi się jednak, że w nietypowych zastosowaniach będę mógł to wykorzystać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1