限制DIV中的固定内容

时间:2013-01-26 04:49:39

标签: javascript jquery css

我在页面上有一个固定的位置元素。我希望该元素包含在我指定的ID或类的某个div标记内。这是一个fiddle的例子。在示例中,浮动条不应位于黑匣子的上方或下方。

我不介意使用jQuery来改变功能,我使用v.1.8.3。

Here as a site that shows an example我所追求的。看看左侧。

以下是示例的代码:

HTML

<div class="wrapper">
<div class="top">
    <p>&nbsp;</p>
</div>
<div class="container">
<p>Floating Bar Should not go above this point.</p>

<p>&nbsp;</p>

</div>
<p>Floating Bar Should not go below this point.</p>
    <p>&nbsp;</p>

</div>

    <div class="add-this-container" >
    <!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_floating_style addthis_counter_style">
<a class="addthis_button_facebook_like" fb:like:layout="box_count"></a>
<a class="addthis_button_tweet" tw:count="vertical"></a>
<a class="addthis_button_google_plusone" g:plusone:size="tall"></a>
<a class="addthis_counter"></a>
</div>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js">   </script>
<!-- AddThis Button END -->
</div>

CSS

.wrapper{
    height:1500px;
    background: #808080;
    width: 300px;
}
.container{
    background: #111;
    height: 600px;
}
.top{
    height: 400px;
    background: #7e0000;
}
.add-this-container{
position: absolute;
    left: 350px;
    top: 250px;
}
.addthis_floating_style{
    background: #ccc;
 }
p{
    color: white;
}

3 个答案:

答案 0 :(得分:3)

我在你的html中添加了一些Id来获取他们的位置(页眉和页脚)

<div class="wrapper">
    <div class="top">
        <p>&nbsp;</p>
    </div>
    <div class="container">
    <p id="header">Floating Bar Should not go above this point.</p>

    <p>&nbsp;</p>

    </div>
    <p id="footer">Floating Bar Should not go below this point.</p>
        <p>&nbsp;</p>

</div>

<div class="add-this-container" >
        <!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_floating_style addthis_counter_style">
<a class="addthis_button_facebook_like" fb:like:layout="box_count"></a>
<a class="addthis_button_tweet" tw:count="vertical"></a>
<a class="addthis_button_google_plusone" g:plusone:size="tall"></a>
<a class="addthis_counter"></a>
</div>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js"></script>
<!-- AddThis Button END -->
</div>

这个小脚本一旦到达页眉或页脚的断点,就会停止浮动div。 我让剧本有点'on'',以帮助你理解它的作用和时间。 它可以变得有点漂亮,也可能使位置发生变化。

$(function(){

    //Scroll event, sets position on scroll
    $(document).scroll(function() { 
        position();        
    });

    // Set initial position on document ready
    position();
});


function position()
{
            //Collect positions
        var floaterHeight = $('.addthis_floating_style').height();
        var headerBreakoff = $('#header').offset().top + $('#header').height();
        var footerBreakoff = $('#footer').offset().top;

        var newTop = $(document).scrollTop() + 20; // this will be position when between header and footer        

        if(newTop <= headerBreakoff) // Above header
        {        
            newTop = headerBreakoff;
        }
        else if(newTop + floaterHeight >= footerBreakoff) // Below footer
        {
            newTop =  footerBreakoff - floaterHeight;
        }

        //Set position
        $(".addthis_floating_style").offset({ top: newTop});
}

这是小提琴

http://jsfiddle.net/urbanbjorkman/BJ6EP/

答案 1 :(得分:1)

将jQuery函数附加到窗口滚动,并检查div是否与您设置的边界的顶部或底部重叠。如果它重叠,则添加或删除一个类,使其从固定位置元素到定期定位元素,限制在指定的边界。当用户向后滚动时,将其翻转回固定位置,它将再次“漂浮”。

答案 2 :(得分:0)

纯粹巧合的是,我遇到了一个jQuery插件,它为我做了这个。它被称为“Sticky Floating Box”,可以找到here