以编程方式滚动非整数刻度值

时间:2018-04-05 15:14:14

标签: javascript google-chrome scroll scale

Windows 10.0.16299.309上的Chrome 65.0.3325.181。显示器:27“,3840×2160。

显示缩放到150%,在Chrome的控制台中输入:

document.documentElement.scrollTop = 1
1
document.documentElement.scrollTop
0.6666666865348816

Chrome console

document.documentElement.scrollTop = 9
9
document.documentElement.scrollTop
8.666666984558105

从页面顶部开始的window.scrollBy(x, y)window.scrollY的另一项测试:

(function f() {
  scrollBy(0, 1)
  console.log(scrollY)
  if (scrollY < 10) {
    f()
  }
})()

输出(15行 - 预期数量的1.5倍):

0.6666666865348816
1.3333333730697632
2
2.6666667461395264
3.3333332538604736
4
4.666666507720947
5.333333492279053
6
6.666666507720947
7.333333492279053
8
8.666666984558105
9.333333015441895
10

另一项window.scroll(x, y)测试:

(function f(n) {
  scroll(0, n)
  console.log(scrollY)
  if (scrollY < 10) {
    f(n + 1)
  }
})(1)

输出(10行 - 正如预期的那样,因为没有积累):

0.6666666865348816
2
2.6666667461395264
4
4.666666507720947
6
6.666666507720947
8
8.666666984558105
10

显示缩放至125%:

document.documentElement.scrollTop = 1
1
document.documentElement.scrollTop
0.800000011920929

在我看来,如果value - 1 + 1/scale不是整数,则value * scale会“计算”真正设定的值。

这是我的网站,Windows或Chrome的错误吗?

0 个答案:

没有答案