我浏览了很多不同的帖子,但我找不到任何有效的解决方案。 有许多捕捉水平滚动条的解决方案,但是如果项目具有相同的大小,它们中的每一个都有效。
我会举一个小例子:
屏幕能够显示300px的宽度。 滚动条内的项目可以有不同的大小,例如:
如果*是100px:
,整个布局将如下所示>> A = [2 3 4 5 6 7]'; %'
>> K = 2;
>> output = conv(A, ones(K,1), 'valid');
>> output = output(1:K:end)
output =
5
9
13
>> K = 3;
>> output = conv(A, ones(K,1), 'valid');
>> output = output(1:K:end)
output =
9
18
现在,滚动条应该恰好位于项目的开头/结尾处。 前两个项目很容易,因为它们具有与屏幕相同的大小。但对于其他人,我无法想出是否有效的解决方案。
因此,如果滚动到第三个项目,滚动条应该会在屏幕左侧第3项的开头处对齐。 ('!' =屏幕尺寸)
1 2 3 4
[***][***][*****][****]
如果几乎滚动到第4项,滚动条应该恰好位于屏幕右侧第3项末尾的位置。
1 2 3 4
[***][***]![***!**][****]
这很难解释。我希望你能理解我的问题。