javascript - 像 Airbnb 一样,切换从顶部出现(下推)的 div 后,将滚动条设置为零(一次)

标签 javascript jquery slidetoggle scrolltop

我正在尝试制作airbnb.nl效果,其中单击按钮时顶部会出现“工作原理”div。然后,当您向下滚动(或单击关闭按钮)时,它会再次消失。

当div在滚动到630px后隐藏时,滚动条会弹出,所以我同时将滚动条设置为0。问题是,当您进一步向下滚动时,它会不断重复此“scrollTop to 0”脚本,从而使其成为不必要的循环。

关于如何在显示 div 时仅使用此脚本 (scrollTop -> 0) 一次,有什么建议吗?或者甚至可能是更漂亮的解决方案? ;)

这是它的实时位置:www.energyguards.nl(我暂时禁用了那里的scrollTop功能)

jQuery(document).on('click', '.flip', function(e){
            e.preventDefault();
            jQuery(".panel").slideToggle("slow");
        });

$(window).scroll(function(){
          if($(this).scrollTop() > 630) $('.panel').hide();
          if($(this).scrollTop() > 630) $(window).scrollTop( 0 );
        }); 

希望收到大家的来信

干杯乔里

最佳答案

查看此演示 http://jsfiddle.net/yeyene/46o7chfu/1/ 希望你的意思是这样的。

JQUERY

$(document).ready(function () {
    // scroll to top and show top content
    $('#show_top_bar').on('click',function(){
        $('html, body').stop().animate({
           scrollTop: 0
        }, 300, function() {
           $('#top_bar').slideDown(300);
        });
    });
    
    // hide top content on click close icon
    $('#close_top_bar').on('click',function(){
        $('#top_bar').slideUp(100);
    });
});

$(window).scroll(function() {
    // hide top content when scroll position is top of content 
    if($(this).scrollTop() > $('#content').position().top){
        if($('#top_bar').css('display') !== 'none') {
            $('#top_bar').slideUp(0);
            $('html, body').stop().animate({
               scrollTop: 0
            }, 0 );
        }
    }
});

关于javascript - 像 Airbnb 一样,切换从顶部出现(下推)的 div 后,将滚动条设置为零(一次),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30453313/

相关文章:

jquery - Flexslider 具有响应式背景图像

jQuery - 垂直向上切换(即不是向下)

javascript - 如何在 JSX 的 setState 中使用变量

javascript - Lodash 返回键如果存在,否则返回另一个键

javascript - 自动完成搜索表单,在文本中间搜索

javascript - 如何在单击按钮时显示隐藏的 div 并在 Angular 2 中隐藏单击的按钮?

jquery - 顶部不工作

php - PHP 中的 HTML 净化

javascript - JQuery 如何使用 x2 .next() 函数获取选择器

jquery - 无法通过单击使 SlideToggle 正常工作