【发布时间】:2021-11-09 03:18:29
【问题描述】:
我有一个带有随机数量子级的水平 div;这个 div 有一个 overflow: hidden 属性,所以当我们通过点击某些特定按钮(基本上是上一个/下一个按钮)在 div 中导航时,一些子项被隐藏并且可以看到。
为了在父 div 中强制导航,我使用了.scrollLeft()。所以当我们按下 previous 时,我会制作类似 scrollLeft(actualscrollLeft - parent.outerWidth()) 的内容,而当我们按下 next 时,我会制作类似 scrollLeft(actualscrollLeft + parent.outerWidth()) 的内容。到目前为止一切顺利(实际上我认为如此)。
我想知道我们何时到达导航的末尾(这样,当我们按下 next 时,我可以回到子元素的开头)。
我正在执行以下操作:
var list_width = jQlist.outerWidth(),
actualScroll = jQlist.scrollLeft(),
fullsize = 0,
jQitems = jQuery(jQlist.find('.item'));
for(var i = 0; i < jQitems.length; i++) { fullsize = fullsize + jQuery(jQitems[i]).outerWidth(); }
if(actualScroll + list_width >= fullsize) { jQlist.scrollLeft(0); }
else { jQlist.scrollLeft(actualScroll + list_width); }
效果很好,但我想知道这是否是执行此操作的更好方式(我的意思是“性能”方式)。
更多细节:
孩子的总数不知道,通过父div一次显示的孩子的数量取决于屏幕宽度,一切都是之前用css计算的。 无论一次显示多少个子元素,它总是适合整个父 div。
以有 4 个子项为例,在大屏幕中,父 div 可以显示 3 个项目,下一个视图显示最后一个项目,而在小屏幕中,第一个视图显示 2 个项目,下一个也显示两个项目。
【问题讨论】:
-
这个问题有三种可能的结果,即所有项目;小于父级的宽度,大于父级的宽度还是混合?
-
@ErikPhilips 我只是添加了一些可以回答您问题的细节:无论一次显示多少个孩子,它们总是适合整个父 div。因此,如果有父 div 显示 2 个项目并且有 3 个项目,则父 div 的第一个视图显示 2 个项目(每个项目的宽度为 50%),父 div 的第二个视图显示 1 个项目(宽度100% 的项目)。如果我不清楚,请告诉我。
-
更新问题后的第二个问题。当点击最后一个小于父元素宽度的元素旁边时,意味着最后一个子元素的左侧不会在父元素的左侧。这是你考虑到的事情。其次滚动条是否可见?
-
@ErikPhilips 最后一个孩子即使单独显示也适合视图,因此完全可见。没有滚动条,我不想^^
标签: javascript jquery performance