1

我在页面上有一个固定位置元素。我希望该元素包含在我分配的 ID 或类的某个 div 标记中。这是一个例子。在示例中,浮动条不应高于或低于黑框。

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

这里是一个展示我所追求的例子的网站。看左边。

这是示例的代码:

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;
}
4

3 回答 3

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 到达页眉或页脚分界点,这个小脚本就会停止它。我把剧本写得有点“不合时宜”,以帮助你了解它的作用和时间。它可以做得更漂亮一些,也可以为位置变化设置动画。

$(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/

于 2013-01-27T09:08:38.037 回答
1

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

于 2013-01-27T04:11:21.463 回答
0

By pure coincidence I cam across a jQuery Plugin that does this for me. It is called "Sticky Floating Box" which can be found here.

于 2013-02-25T22:20:11.427 回答