Установите точное положение прокрутки при масштабировании - PullRequest
1 голос
/ 01 мая 2020

Я создаю картографическое приложение, которое помещает изображение маркера на холст и прокручивает его. Я использую масштабирование и прокрутку браузера для увеличения / уменьшения масштаба карты. Однако я заметил, что есть какое-то странное поведение, и мне интересно, как обойти это.

Это немного сложно объяснить, но здесь мы go.

Давайте представим, что вы находитесь на стандартном уровне масштабирования на веб-странице (дальнейшее уменьшение невозможно). Давайте представим, что область, которую показывает окно вашего браузера - это «невидимое поле». Есть некоторые вещи, которые вы можете увидеть, и некоторые вещи, которые не видны (которые вам нужно прокрутить, чтобы добраться до). Как только вы увеличиваете масштаб, браузер все еще делает вид, что ваш видовой экран все еще имеет 100% -ое увеличение (т. Е. Ваш браузер по сути обрезает это невидимое поле, но невидимое поле остается на том же месте). Любые JS на странице видит положение прокрутки как одно и то же, независимо от того, где вы перемещаетесь вокруг в невидимом поле . Однако, как только вы прокрутите до края, вы начнете pu sh края невидимого поля. Если вы используете JS для установки позиции прокрутки (window.scrollTo(xPos, yPos)), она устанавливает позицию невидимого блока, но часть невидимого блока, которую вы видите , все еще является относительной. Это означает, что если вы установите положение прокрутки в (0,0), а ваше обрезанное представление не будет находиться точно в верхнем левом углу невидимого поля, видимая часть НЕ будет иметь (0,0).

Проблема, с которой я столкнулся, заключается в том, что мне нужно переместить увеличенное изображение в указанное c место. Поскольку установка положения невидимого поля на самом деле не работает, есть ли способ заставить браузер избавиться от невидимого поля, полностью уменьшить масштабирование или, возможно, определить, где находится увеличенная часть в пределах невидимая коробка? Я в тупике.

...