隨窗體滑動(dòng)的小插件sticky源碼
$.fn.stickyfloat = function(options, lockBottom) {
var $obj = this;
var parentPaddingTop = parseInt($obj.parent().css('padding-top'));
var startOffset = $obj.parent().offset().top;
var opts = $.extend({ startOffset: startOffset, offsetY: parentPaddingTop, duration: 200, lockBottom:true }, options);
$obj.css({ position: 'absolute' });
if(opts.lockBottom){
var bottomPos = $obj.parent().height() - $obj.height() + parentPaddingTop;
if( bottomPos < 0 )
bottomPos = 0;
}
$(window).scroll(function () {
$obj.stop();
var pastStartOffset = $(document).scrollTop() > opts.startOffset;
var objFartherThanTopPos = $obj.offset().top > startOffset;
var objBiggerThanWindow = $obj.outerHeight() < $(window).height();
if( (pastStartOffset || objFartherThanTopPos) && objBiggerThanWindow ){
var newpos = ($(document).scrollTop() -startOffset + opts.offsetY );
if ( newpos > bottomPos )
newpos = bottomPos;
if ( $(document).scrollTop() < opts.startOffset )
newpos = parentPaddingTop;
$obj.animate({ top: newpos }, opts.duration );
}
});
};
使用方法很簡(jiǎn)單:只要在頁(yè)面中引入該插件,然后用選擇器調(diào)用:
$('#menu15').stickyfloat({ duration: 500 });
$('#menu14').stickyfloat({ duration: 500 });
$('#menu13').stickyfloat({ duration: 500 });
$('#menu12').stickyfloat({ duration: 500 });
后面的duration參數(shù)表示滑動(dòng)的速度,越大越慢。
相關(guān)文章
JS檢測(cè)頁(yè)面中哪個(gè)HTML標(biāo)簽觸發(fā)點(diǎn)擊事件的方法
這篇文章主要介紹了JS檢測(cè)頁(yè)面中哪個(gè)HTML標(biāo)簽觸發(fā)點(diǎn)擊事件的方法,涉及javascript頁(yè)面元素事件響應(yīng)機(jī)制,需要的朋友可以參考下2016-06-06Javascript showModalDialog兩個(gè)窗體之間傳值
前一篇文章Javascript怎么在兩個(gè)窗體之間傳值中講到了如何利用window.open()方法打開新窗體,并在兩個(gè)窗體之間傳值的方法。2009-09-09JS中怎樣判斷undefined(比較不錯(cuò)的方法)
用servlet賦值給html頁(yè)面文本框值后,用alert來彈出這個(gè)值.結(jié)果顯示"undefined".下面為大家介紹下具體的判斷方法,大家可以參考下2014-03-03javascript中使用css需要注意的地方小結(jié)
javascript中使用css需要注意的地方小結(jié),注意保留字問題。2010-09-09