【发布时间】:2012-05-28 01:14:48
【问题描述】:
如何让一个 html 元素在滚动到它之前不固定?所以当用户滚动时它会处于正常位置,但用户滚动过去后它不会离开屏幕?
【问题讨论】:
标签: javascript html css
如何让一个 html 元素在滚动到它之前不固定?所以当用户滚动时它会处于正常位置,但用户滚动过去后它不会离开屏幕?
【问题讨论】:
标签: javascript html css
为onscroll事件附加一个监听器,如果scrollTop大于元素的Y位置,则设置为position: fixed。
【讨论】:
我以前用过这段代码:
(function($){
$.fn.scrollFixed = function(params){
params = $.extend( {appearAfterDiv: 0, hideBeforeDiv: 0}, params);
var element = $(this);
if(params.appearAfterDiv)
var distanceTop = element.offset().top + $(params.appearAfterDiv).outerHeight(true) + element.outerHeight(true);
else
var distanceTop = element.offset().top;
if(params.hideBeforeDiv)
var bottom = $(params.hideBeforeDiv).offset().top - element.outerHeight(true) - 10;
else
var bottom = 200000;
$(window).scroll(function(){
if( $(window).scrollTop() > distanceTop && $(window).scrollTop() < bottom )
element.css({'position':'fixed', 'top':'5px'});
else
element.css({'position':'static'});
});
};
})(jQuery);
然后只需调用元素:
$(document).ready( function(){
$("#scrollingDiv").scrollFixed({appearAfterDiv:'.sidebar p', hideBeforeDiv:'.footer'});
$("#scrollingDiv1").scrollFixed({hideBeforeDiv:'.footer'});
});
【讨论】:
看看jQuery Scrollfollow plugin。我已经使用它来方便地实现该效果。
您只需在要保留在视图中的元素上调用它:
<script type="text/javascript">
$( '#example' ).scrollFollow();
</script>
可以配置缓动、位置等参数。
【讨论】: