【问题标题】:Horizontal scrolling upon button click (viewport + scrollLeft)单击按钮时水平滚动(视口 + scrollLeft)
【发布时间】: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="#">&#60;</a></li>

        <li class="right"><a href="#">&#62;</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


【解决方案1】:

这是您需要的更改,您可能仍需要一些修复,但这将有助于滚动。

JavaScript

$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) {
$('table').animate({
scrollTop: target.offset().top - 100
}, 1000);
return false;
}
}
});
});

CSS:

table {
border-collapse: collapse;
border-spacing: 0;
position: absolute;
top: 200px;
width: 100%;
display: inline-block;
}

【讨论】:

  • 非常感谢您的帮助,在给出了表格位置之后:即使使用我原来的 Jquery,这一切也完全一致!剩下要做的就是修复背景图像!像魅力一样工作!
猜你喜欢
  • 2016-09-02
  • 1970-01-01
  • 2023-03-24
  • 2014-05-14
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多