我在页面上有一个固定的位置元素。我希望该元素包含在我指定的ID或类的某个div标记内。这是一个fiddle的例子。在示例中,浮动条不应位于黑匣子的上方或下方。
我不介意使用jQuery来改变功能,我使用v.1.8.3。
Here as a site that shows an example我所追求的。看看左侧。
以下是示例的代码:
HTML
<div class="wrapper">
<div class="top">
<p> </p>
</div>
<div class="container">
<p>Floating Bar Should not go above this point.</p>
<p> </p>
</div>
<p>Floating Bar Should not go below this point.</p>
<p> </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;
}
答案 0 :(得分:3)
我在你的html中添加了一些Id来获取他们的位置(页眉和页脚)
<div class="wrapper">
<div class="top">
<p> </p>
</div>
<div class="container">
<p id="header">Floating Bar Should not go above this point.</p>
<p> </p>
</div>
<p id="footer">Floating Bar Should not go below this point.</p>
<p> </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});
}
这是小提琴
答案 1 :(得分:1)
将jQuery函数附加到窗口滚动,并检查div是否与您设置的边界的顶部或底部重叠。如果它重叠,则添加或删除一个类,使其从固定位置元素到定期定位元素,限制在指定的边界。当用户向后滚动时,将其翻转回固定位置,它将再次“漂浮”。
答案 2 :(得分:0)
纯粹巧合的是,我遇到了一个jQuery插件,它为我做了这个。它被称为“Sticky Floating Box”,可以找到here。