95 lines
1.9 KiB
JavaScript
95 lines
1.9 KiB
JavaScript
(function($,undefined){
|
|
var
|
|
def={
|
|
stuckClass:'isStuck'
|
|
}
|
|
,doc=$(document),anim = false;
|
|
|
|
$.fn.TMStickUp=function(opt){
|
|
opt=$.extend(true,{},def,opt)
|
|
|
|
$(this).each(function(){
|
|
var $this=$(this)
|
|
,posY//=$this.offset().top+$this.outerHeight()
|
|
,isStuck=false
|
|
,clone=$this.clone().appendTo($this.parent()).addClass(opt.stuckClass)
|
|
,height//=$this.outerHeight()
|
|
,stuckedHeight=clone.outerHeight()
|
|
,opened//=$.cookie&&$.cookie('panel1')==='opened'
|
|
,tmr
|
|
|
|
$(window).resize(function(){
|
|
clearTimeout(tmr)
|
|
clone.css({top:isStuck?0:-stuckedHeight,visibility:isStuck?'visible':'hidden'})
|
|
tmr=setTimeout(function(){
|
|
posY=$this.offset().top//+$this.outerHeight()
|
|
height=$this.outerHeight()
|
|
stuckedHeight=clone.outerHeight()
|
|
opened=$.cookie&&$.cookie('panel1')==='opened'
|
|
|
|
clone.css({top:isStuck?0:-stuckedHeight})
|
|
},40)
|
|
}).resize()
|
|
|
|
clone.css({
|
|
position:'fixed'
|
|
,width:'100%'
|
|
})
|
|
|
|
$this
|
|
.on('rePosition',function(e,d){
|
|
if(isStuck)
|
|
clone.animate({marginTop:d},{easing:'linear'})
|
|
if(d===0)
|
|
opened=false
|
|
else
|
|
opened=true
|
|
})
|
|
|
|
doc
|
|
.on('scroll',function(){
|
|
var scrollTop=doc.scrollTop()
|
|
|
|
if(scrollTop>=posY&&!isStuck){
|
|
clone
|
|
.stop()
|
|
.css({visibility:'visible'})
|
|
.animate({
|
|
top:0
|
|
,marginTop:opened?50:0
|
|
},{
|
|
|
|
})
|
|
|
|
isStuck=true
|
|
}
|
|
|
|
if(scrollTop<posY+height&&isStuck){
|
|
$('.sf-menu ul').css('display', 'none');
|
|
|
|
var sf = $('.search-form');
|
|
if(sf.length > 0){
|
|
sf.find('input').blur();
|
|
}
|
|
|
|
clone
|
|
.stop()
|
|
.animate({
|
|
top:-stuckedHeight
|
|
,marginTop:0
|
|
},{
|
|
duration:200
|
|
,complete:function(){
|
|
clone.css({visibility:'hidden'})
|
|
}
|
|
});
|
|
|
|
isStuck=false;
|
|
|
|
}
|
|
})
|
|
.trigger('scroll')
|
|
})
|
|
}
|
|
})(jQuery)
|