滚动到可滚动div中特定类的顶部-每次单击上/下按钮

草药混乱420

我有一个RSS博客供稿(隐藏的溢出),其div顶部和底部带有按钮,这些按钮可以平滑滚动整个供稿。我正在寻找一种方法,以便在每次单击按钮时,它将滚动到下一个“ rss-item”(类)的顶部。div看起来像这样:在此处输入图片说明

所以我要实现的目标是,每当您单击向下箭头(或向上箭头)时,当每个“ rss-item”位于div顶部时,滚动就会停止。我探讨了许多类似的问题,但并没有完全达到我想要的目标。

这是用于平滑div内滚动的函数:

 $(document).ready(function() {

    var scrollTime = 900;

$('#upClick').click(function() {
    $('#homeBlogs').animate({
        scrollTop: $('#homeBlogs').scrollTop() + 200
    }, scrollTime);
});


$('#downClick').click(function() {
    $('#homeBlogs').animate({
        scrollTop: $('#homeBlogs').scrollTop() - 200
    }, scrollTime);
});


});

这是生成的源html的屏幕截图: 在此处输入图片说明

sm1215

好的,所以我尽我所能在jsfiddle中重新创建了它。这是HTML结构。我尝试根据屏幕快照构建它,因此它们应该相似。注意:我在第一个“ rss-item”中添加了“ active”的CSS类。这仅应以HTML格式应用于第一项,并且需要保留在此处以便Javascript部分正确运行。

<div id="blogSection">
    <div class="row" id="scrollUp">
        <button class="scrollButton" id="upClick">Scroll Up</button>
    </div>
    <div id="homeBlogs">
        <div class="rss-box">
            <p class="rss-title"></p>
            <ul class="rss-items">
                <li class="rss-item active">
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                </li>
                <li class="rss-item">
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                </li>
                <li class="rss-item">
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                </li>
                <li class="rss-item">
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                </li>
                <li class="rss-item">
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                </li>
                <li class="rss-item">
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                    <p>ContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContentContent</p>
                </li>
            </ul>
        </div>
    </div>
    <div id="scrollDown" class="row">
        <button class="scrollButton" id="downClick">Scroll Down</button>
    </div>
</div>

接下来,这是我使用的CSS。这纯粹是为了支持演示。我对其进行了设置,以便无论哪个“ rss-item”具有“活动”类,都将以红色突出显示。希望这应该提供有关单击按钮时正在发生什么的视觉提示。

button {
    display: block;
    width: 100%;
    background-color: black;
    color: white;
    height: 50px;
    cursor: pointer;
}

#scrollUp {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
}

#scrollDown {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
}

.active {
    color: red;
}

最后,这是我用来完成任务的Javascript。我已经对其进行了很大的更改,以帮助提高效率并更正一些错误。

$(document).ready(function() {})
//we can use one single event and modify the behavior based on the direction that was clicked
.on('click', '.scrollButton', function() {
    var scrollTime = 900,
        direction = $(this).attr('id'),
        $currentItem = $('.rss-item.active'),
        $newItem;

    switch (direction) {
        case 'upClick':
            $newItem = $currentItem.prev('.rss-item');
        break;

        case 'downClick':
            $newItem = $currentItem.next('.rss-item');
        break;
    }

    //if we aren't at the top or bottom of the list already
    if ($newItem.length > 0) {
        //since we know we can now change the active item, we need to remove this class so we can apply it to the new item
        $('.rss-item').removeClass('active');

        $newItem.addClass('active');
    }

    //Now that the logic is out of the way, we can run the scroll animation
    //Also, I think you will want to use 'html, body' as a selector so the page itself moves
    $('html, body').animate({
        scrollTop: $('.rss-item.active').offset().top - 200 //this will keep content positioned correctly, but you shouldn't need both a '+ 200' and '- 200' here. Adjust this value as needed.
    }, scrollTime);
});

最后是jsfiddle:https://jsfiddle.net/sm1215/sebgbnr4/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击div时滚动到顶部,如果滚动在顶部,则滚动到底部

来自分类Dev

在 css 中单击时平滑滚动到特定的 div

来自分类Dev

单击/更改单选按钮时如何滚动到特定的div

来自分类Dev

滚动到可滚动div中的顶部

来自分类Dev

单击特定链接显示并滚动到 <div>

来自分类Dev

单击时将窗口滚动到div的顶部

来自分类Dev

jQuery在div单击时无法滚动到元素的顶部

来自分类Dev

单击按钮后是否滚动到div?

来自分类Dev

Bootstrap中的“提交”按钮滚动到顶部

来自分类Dev

Android-单击按钮滚动到视图顶部

来自分类Dev

单击按钮无法滚动到菜单顶部-AngularJS

来自分类Dev

单击时,jQuery分页按钮滚动到顶部

来自分类Dev

Android-单击按钮滚动到视图顶部

来自分类Dev

单击按钮无法滚动到菜单顶部-AngularJS

来自分类Dev

单击IE中的关闭按钮时,jQueryUI对话框滚动到顶部

来自分类Dev

每次单击按钮添加新的div

来自分类Dev

如何在 Angular 中单击按钮时将嵌套滚动条向下滚动到嵌套滚动 div 的底部

来自分类Dev

单击元素时,在可滚动div中滚动内容

来自分类Dev

RecyclerView滚动到顶部按钮

来自分类Dev

试图使滚动到顶部按钮工作

来自分类Dev

一个滚动按钮,可滚动到 jquery 中的多个元素

来自分类Dev

如何滚动 div 并单击带有特定按钮文本的按钮

来自分类Dev

使用 jQuery 上下滚动到 div id

来自分类Dev

每次更改时,Angular 9滚动到路线顶部

来自分类Dev

页面在每次输入模糊时滚动到顶部

来自分类Dev

触发单击后,使用URL中的哈希值,页面需要滚动到顶部

来自分类Dev

滚动到元素的顶部,在jQuery中单击手风琴

来自分类Dev

单击按钮如何滚动到所选选项?

来自分类Dev

jQuery滚动到按钮单击中的部分

Related 相关文章

  1. 1

    单击div时滚动到顶部,如果滚动在顶部,则滚动到底部

  2. 2

    在 css 中单击时平滑滚动到特定的 div

  3. 3

    单击/更改单选按钮时如何滚动到特定的div

  4. 4

    滚动到可滚动div中的顶部

  5. 5

    单击特定链接显示并滚动到 <div>

  6. 6

    单击时将窗口滚动到div的顶部

  7. 7

    jQuery在div单击时无法滚动到元素的顶部

  8. 8

    单击按钮后是否滚动到div?

  9. 9

    Bootstrap中的“提交”按钮滚动到顶部

  10. 10

    Android-单击按钮滚动到视图顶部

  11. 11

    单击按钮无法滚动到菜单顶部-AngularJS

  12. 12

    单击时,jQuery分页按钮滚动到顶部

  13. 13

    Android-单击按钮滚动到视图顶部

  14. 14

    单击按钮无法滚动到菜单顶部-AngularJS

  15. 15

    单击IE中的关闭按钮时,jQueryUI对话框滚动到顶部

  16. 16

    每次单击按钮添加新的div

  17. 17

    如何在 Angular 中单击按钮时将嵌套滚动条向下滚动到嵌套滚动 div 的底部

  18. 18

    单击元素时,在可滚动div中滚动内容

  19. 19

    RecyclerView滚动到顶部按钮

  20. 20

    试图使滚动到顶部按钮工作

  21. 21

    一个滚动按钮,可滚动到 jquery 中的多个元素

  22. 22

    如何滚动 div 并单击带有特定按钮文本的按钮

  23. 23

    使用 jQuery 上下滚动到 div id

  24. 24

    每次更改时,Angular 9滚动到路线顶部

  25. 25

    页面在每次输入模糊时滚动到顶部

  26. 26

    触发单击后,使用URL中的哈希值,页面需要滚动到顶部

  27. 27

    滚动到元素的顶部,在jQuery中单击手风琴

  28. 28

    单击按钮如何滚动到所选选项?

  29. 29

    jQuery滚动到按钮单击中的部分

热门标签

归档