Jquery slideDown()与固定div并推送其余内容

Jquery slideDown()与固定div并推送其余内容,jquery,css,Jquery,Css,我的目标是通过单击一个元素来向下/向上滑动div。我希望当div向下/向上滑动时,下面的内容也向下/向上移动。我还希望在滚动页面时,此div保持固定 这是我的尝试 HTML: JQuery: $("#btn").click(function(){ if ($("#slidebox").is(":hidden")){ $("#slidebox").slideDown(1500); }e

我的目标是通过单击一个元素来向下/向上滑动
div
。我希望当
div
向下/向上滑动时,下面的内容也向下/向上移动。我还希望在滚动页面时,此
div
保持固定

这是我的尝试

HTML:

JQuery:

  $("#btn").click(function(){
                 if ($("#slidebox").is(":hidden")){
                     $("#slidebox").slideDown(1500);
                 }else{
                     $("#slidebox").slideUp(1500);
                 }                  
            });
我实现了第一个目标。
wrap
slidebox
推动。但是当页面被滚动时,
幻灯片盒
不会保持固定。我尝试更改两个
div
上的position属性,但它们开始出现不希望出现的行为。
我能做些什么来达到欲望效果?谢谢

如果从顶部开始的滚动位置大于
x
,则可以在上添加一个类,该类将添加
位置:固定
#幻灯片盒
元素:

$(“#btn”)。单击(函数(){
如果($(“#幻灯片框”)是(“:隐藏”)){
$(#slidebox”)。slideDown(1500);
}否则{
$(#slidebox”)。slideUp(1500);
}
});
$(窗口)。滚动(函数(){
$(“#slidebox”).toggleClass('fixed',$(window.scrollTop()>10);
})
#幻灯片盒{
高度:100px;
显示:无;
位置:相对位置;
背景:红色;
z指数:1;
}
#固定式滑盖盒{
位置:固定;
排名:0;
宽度:100%;
}
#包裹{
高度:1000px;
背景:绿色;
位置:相对位置;
}
#btn{
位置:绝对位置;
顶部:100px;
左:0px;
}

部分内容1

一些内容2
我正在使用chrome查看此内容。。当我滚动时,是否希望我能够关闭div?


$(窗口)。滚动(函数(){
如果($(this).scrollTop()>200){
$('#slidebox').css({
“显示”:“无”
});
}
});
#滑盒{
高度:100px;
显示:无;
位置:相对位置;
背景:红色;
}
#包裹{
高度:1000px;
背景:绿色;
位置:相对位置;
}
#btn{
位置:绝对位置;
顶部:100px;
左:0px;
}
一些内容
部分内容2
$(“#btn”)。单击(函数(){
如果($(“#幻灯片框”)是(“:隐藏”)){
$(#slidebox”)。slideDown(1500);
}否则{
$(#slidebox”)。slideUp(1500);
}
});

复制了@Ionut的答案。归功于他/她:)

$(“#btn”)。单击(函数(){
如果($(“#幻灯片框”)是(“:隐藏”)){
$(#slidebox”)。slideDown(1500);
$(“.slidebox包装”).slideDown(1500);
}否则{
$(#slidebox”)。slideUp(1500);
$(“.slidebox包装”).slideUp(1500);
}
});
$(窗口)。滚动(函数(){
$(“#slidebox”).toggleClass('fixed',$(window.scrollTop()>10);
})
.slidebox包装器{
高度:100px;
显示:无;
}
#滑盒{
高度:100px;
显示:无;
位置:相对位置;
背景:红色;
z指数:1;
}
#固定式滑盖盒{
位置:固定;
排名:0;
宽度:100%;
}
#包裹{
高度:1000px;
背景:绿色;
位置:相对位置;
}
#btn{
位置:绝对位置;
顶部:100px;
左:0px;
}

部分内容1

一些内容2
所以您希望所有内容都是固定的?还是只有幻灯片盒?@nieknijl和
幻灯片盒
。那么,当div位于固定位置时,为什么希望div下方的内容向下或向上移动?对我来说,这种移动行为与固定行为相结合听起来是不可能的:/@nieknijl的目标是制作一个固定的标题,扩展时不会与下面的内容重叠。啊,明白了!:)它起作用了!谢谢唯一的问题是
幻灯片盒的宽度必须设置为100%。@João,我很高兴它对你有用。我已经将
width:100%
添加到
slidebox
元素中。请查看更新的答案。我还为滚动时的添加类解决方案添加了一个速记代码。将
#slidebox
元素包装在一个高度相同的包装器中。这样,当您开始滚动页面时,页面不会跳转。查看我的答案:)@NiekNijland,对不起,我看不出它的行为方式有什么不同,请不要复制我的代码来添加到您的答案中。我正在参考这个精确的副本
$(window).scroll(function(){$(“#slidebox”).toggleClass('fixed',$(window.scrollTop()>10);})
。这不是OP问的问题。我想João找到了他想要的答案。@Ionut在您的示例中,当您开始滚动时,绿色divs会向上滚动100px。在我的例子中,它不是。很抱歉我应该提到我抄了你的答案!将在我的回答中为您提供积分:)不,只有用户再次单击按钮,
slidebox
才会关闭(slideUp)。谢谢你的回答。
#slidebox{
 height:100px;
 display:none;
 position:relative;
 background:red;
}

#wrap{
 height:1000px;
 background:green;
 position:relative;
}

#btn{
 position:absolute;
 top:100px;
 left:0px;
}
  $("#btn").click(function(){
                 if ($("#slidebox").is(":hidden")){
                     $("#slidebox").slideDown(1500);
                 }else{
                     $("#slidebox").slideUp(1500);
                 }                  
            });
   <head>
        <script src="js/currentjquery.js"></script>
        <script>
            $(window).scroll(function() {
                if ($(this).scrollTop() > 200) {
                    $('#slidebox').css({
                        'display' : 'none'
                    });
                }
            });
        </script>
        <style>
            #slidebox {
                height: 100px;
                display: none;
                position: relative;
                background: red;
            }

            #wrap {
                height: 1000px;
                background: green;
                position: relative;
            }

            #btn {
                position: absolute;
                top: 100px;
                left: 0px;
            }
        </style>
    </head>
    <body>
        <div id="slidebox">
            Some content
        </div>
        <div id="wrap">
            Some content 2
            <input type="button" id="btn" value="Show Div">
        </div>
        <script>
            $("#btn").click(function() {
                if ($("#slidebox").is(":hidden")) {
                    $("#slidebox").slideDown(1500);
                } else {
                    $("#slidebox").slideUp(1500);
                }
            });

        </script>

    </body>
</html>