【发布时间】:2015-11-26 12:51:11
【问题描述】:
我很确定这是一个非常简单的问题,但即使通过 Stackoverflow/Google 阅读了几个小时......仍然没有运气。
我有一个水平滚动网站,效果很好。现在我在屏幕底部(左/右)添加了两个按钮。
如果访问者单击“右”按钮,我希望整个页面滚动到下一个“部分”,即右侧的 $(window).width() 像素。
我的想法是在点击按钮 ScrollLeft 时添加这样的 jquery:$(window).width() + $(window).ScrollLeft()。
从理论上讲,这将从第一次单击开始,向右滚动到视口的宽度。 2/3/4 点击它将从当前的 ScrollLeft() 位置开始,并再次添加视口宽度。
我使用的 jquery 如下(很可能有点臃肿,jquery 不是我的强项)
我试过定义变量,进一步分解等等。一切都无济于事。
$(".right a").on("click", function(event) {
event.preventDefault();
$("html, body").animate({
scrollLeft: $(window).scrollLeft() + $(window).width()
}, "slow"); //Animates the scroll
});
$(".left a").on("click", function(event) {
event.preventDefault();
$("html, body").animate({
scrollLeft: $(window).scrollLeft() - $(window).width()
}, "slow"); //Animates the scroll
});
-编辑-
这里要求的 HTML 标记。
#horz-wrap 里面的文章实际上是滚动的。
<div class="sitewrap">
<div class="portfolio-wrapper">
<section id="horz-wrap">
<article class="post">
<!--section here-->
</article>
<article class="post">
<!--section here-->
</article>
</section>
</div>
<ul class="horz-nav">
<li class="left"><a href="#"><</a></li>
<li class="right"><a href="#">></a></li>
</ul>
--编辑 2--
根据要求,我刚刚上传了页面,实时版本:http://lauretf35.thirtyfive.axc.nl/laurens/test.html 谢谢!
【问题讨论】:
-
我不认为body,html需要动画,它里面的部分,可以显示html代码,而不是整个代码,只是body里面的基本部分
-
@Lukcy Chingi,刚刚添加了 HTML 的简短标记。现在真正起作用的是,单击按钮后,我可以向右和向后滚动 1 个部分。然而,它不会再进一步。如果我从 $(window).width 和 $(window).scrollLeft 创建变量 Firebug 一直告诉我 ScrollLeft 变量保持为 0。因此它只会向右滚动一次,因为在那之后下一个 scrollLeft 位置仍然只有 $ (Window).width (显然 $(window).scrollLeft 仍然为 0。
-
您的所有部分都包含在portfolio-wrapper 中吗?如果是,则单击将JS 代码应用到portfolio-wapper
-
你想滚动什么?一次一个
section还是一个article? -
@Lucky Chingi,刚刚将 JS 应用到了投资组合包装器,然后就不再移动了。我已将原始(正文、HTML)放回原处,现在它再次滚动,但只有 1 个部分向右并回到开头。
标签: javascript jquery scroll horizontal-scrolling