【发布时间】:2016-01-11 05:28:51
【问题描述】:
如下图所示:
找到与thumb height 和thumb step 成比例的content step 值。
content step 是通过垂直位置滚动的像素量。
这里的公式是什么?
【问题讨论】:
标签: user-interface scrollbar formula rectangles
如下图所示:
找到与thumb height 和thumb step 成比例的content step 值。
content step 是通过垂直位置滚动的像素量。
这里的公式是什么?
【问题讨论】:
标签: user-interface scrollbar formula rectangles
拇指高度计算公式
var arrowHeight = 25;
var viewportHeight = 200;
var contentHeight = 600;
var viewableRatio = viewportHeight / contentHeight; // 1/3 or 0.333333333n
var scrollBarArea = viewportHeight - arrowHeight * 2; // 150px
var thumbHeight = scrollBarArea * viewableRatio; // 50px
滚动条内容步长的计算公式
var scrollTrackSpace = self.contentHeight - self.viewportHeight; // (600 - 200) = 400
var scrollThumbSpace = self.viewportHeight - self.thumbHeight; // (200 - 50) = 150
var scrollJump = scrollTrackSpace / scrollThumbSpace; // (400 / 150 ) = 2.666666666666667
最后:-
拇指高度 = 50px;
Thumb Step Down = 1px;
内容向上滚动 = 2.666666666666667px;
如果您向下跳 1 像素,那么您的内容应该向上滚动 2.666666666666667 像素。
完整的细节请参考这个帖子:-Complete Scrolling Formula
【讨论】:
arrowHeight 是什么?
我尝试使用您在 VB.net 中提供的公式,但它不起作用。拇指在滚动条末端停止。滚动条和可视区域都是 490px,内容高度是内容项的数量 (ChAm) 乘以 50 再加上 40。
Dim contentHeight As Integer = ChAm * 50 + 40
Dim scrollBarArea As Integer = 490
Dim viewableRatio As Double = scrollBarArea / contentHeight
Dim thumbHeight As Double = scrollBarArea * viewableRatio
Dim scrollTrackSpace As Integer = contentHeight - scrollBarArea
Dim scrollThumbSpace As Double = scrollBarArea - thumbHeight
Dim scrollJump As Double = scrollTrackSpace / scrollThumbSpace
【讨论】: