Проблема субпиксельной прокрутки, невозможно правильно настроить scrollTop в Chrome 69 - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь установить свойство scrollTop некоторого элемента DOM программным способом, и у меня странное поведение, которое нарушает мои тесты в какой-то конкретной среде.Я создал минимальное репро ( ссылка )

HTML

<div id=viewport><div id=content></div></div>

CSS

#viewport {
  overflow-y: auto;
  height: 20px;
}
#content {
  height: 150px;
}

JS

const viewport = document.getElementById("viewport");
viewport.scrollTop = 75;
console.log(viewport.scrollTop);

Результат скрипта не работает на Chrome 69.0.3497.100 , работающем на Win 10 Pro .Это 74.4000015258789 вместо 75.Он работает правильно на той же версии Chrome на Mac и даже на Win 10 Home под управлением VirtualBox. Firefox и Edge также не имеют такой проблемы.

Я знаю, это выглядит очень странно, но что это может быть?Кто-нибудь может подтвердить эту проблему?И можно ли это как-то исправить, чтобы убедиться, что результат присваивания scrollTop именно тот, который я хочу?


Обновление .Благодаря @khajjit я смог воспроизвести проблему на своем компьютере Mac и получил 74.66666412353516 при 75% уменьшении и 150% увеличении. 80% дает 75, 90% - 74.44444274902344, 110% -- 74.54545593261719 и т. Д. (Я обновил демо , чтобы показать таблицу результатов).Так что проблема не относится к ОС.Но похоже, что проблема только в Chrome.Firefox и Edge возвращают 75 в любом масштабе.

Обновление 2 .Масштабирование разрешения экрана на уровне ОС также влияет на ситуацию.Это был случай Win 10 Pro, описанный выше;масштабирование ОС составило 125%.

Таким образом, практическая часть вопроса заключается в том, как преодолеть проблемы с округлением в Chrome, чтобы точно установить scrollTop?


Обновление 3 .Chromium Dev подтвердил, что это ошибка :

Эта проблема связана с тем, что Chrome не полностью поддерживает дробное смещение прокрутки.

Так что, если кто-тоЕсли вы заинтересованы в решении этой проблемы, перейдите по ссылке и отметьте проблему на конце Chromium.

1 Ответ

0 голосов
/ 25 сентября 2018

Я думаю, это может быть связано с разрешением монитора.
У меня разрешение 1920x1080, а со шкалой 100% результат равен 75.
Но если вы установите 75% или 150%,результат будет 74.66666412353516.
Или, скажем, 25%, результат будет ровно 74.


У меня нет точного ответа относительно того, с чем это может быть связано, но я думаю,это небольшое исследование может привести к правильному пути.

...