我有三个div,每个div都有一些隐藏的内容。当您点击div时,其内容将通过滑动显示。与此同时,我正在使用scrollTop使浏览器滚动到被点击的块的顶部。 HTML看起来像这样:scrollTop动画的问题
<div class="blocks block1"></div>
<div class="content block1_content"></div>
<div class="blocks block2"></div>
<div class="content block2_content"></div>
<div class="blocks block3"></div>
<div class="content block3_content"></div>
但是,即时通讯有问题的部分scrollTop动画。这里是JS:
$('.blocks').on("click", function() {
if (!$(this).hasClass('expanded')) {
collapseExpandedFunction();
$('html, body').animate({
scrollTop: $(this).offset().top
}, 500);
$(this).addClass('expanded');
$(this).next().slideDown();
} else if ($(this).hasClass('expanded')) {
collapseExpandedFunction();
}
});
collapseExpandedFunction = function() {
$('.blocks.expanded').removeClass('expanded');
$('.content').slideUp();
};
我做了的jsfiddle以更容易说明问题:https://jsfiddle.net/ss53ckyk/3/
释:
如果你开始切换的绿色块,然后切换红色或蓝色,都很好。绿色内容被隐藏,而红色/蓝色显示并滚动到块顶部。
问题是,如果你从顶部开始往下移动。如果您先切换红色,然后选择蓝色或绿色,则浏览器将无法正确向下滚动。
我想要的另一件事是在scrollTop动画完成后使slideDown发生。
希望有人能帮助我!
编辑:
应该只有一个街区的内容可见在同一时间。例如,如果您单击红色然后蓝色,则红色的内容应该滑动,而蓝色显示。
感谢您的回复,现在工作好多了,尽管还是有一个问题。 collapseExpandedFunction()可以让所有其他块的内容向上滑动。一次只能显示一个块内容。例如,如果您单击红色然后蓝色,则红色的内容应该滑动,而蓝色显示。任何想法如何解决他? ...用这个编辑帖子。 – qua1ity
@ quaternity:我已经更新了解决方案。希望这对你有用。 – DinoMyte