/*
* author: mihail-174
* v1.0
* github: https://github.com/mihail-174
*
* Закрепление блока (например: панель навигации по странице).
* Параметры:
* height: 50 — по умолчанию = высоте блока
*/
$.fn.sticky = function(options) {
var elem = this;
options = $.extend({
height: elem.height()
}, options);
if (elem.length) {
var positionBlock = this.offset().top + options.height;
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll > positionBlock) {
elem.addClass('fixed');
} else if (scroll <= positionBlock) {
elem.removeClass('fixed');
}
});
}
}
/*
* author: mihail-174
* v1.1
* github: https://github.com/mihail-174
*
* Закрепление блока (например: панель навигации по странице).
*
* USED:
* $('class_блока').sticky();
* *
* Параметры по умолчанию:
* stickyoffsetTop: 0 — расстояние до блока когда его закреплять
* stickyClassName: 'sticky' — класс для фиксации блока
*/
$.fn.sticky = function(options) {
var elem = this;
options = $.extend({
stickyoffsetTop: 0,
stickyClassName: 'sticky'
}, options);
return this.each(function() {
if (elem.length) {
var positionBlock = elem.offset().top;
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll > positionBlock - options.stickyoffsetTop) {
elem.addClass(options.stickyClassName);
} else if (scroll < positionBlock) {
elem.removeClass(options.stickyClassName);
}
});
}
});
}
/*
* author: mihail-174
* v1.2
* github: https://github.com/mihail-174
*
* Закрепление блока (например: панель навигации по странице).
*
* USED:
* $('class_блока').sticky();
* *
* Параметры по умолчанию:
* stickyoffsetTop: 0 — расстояние до блока когда его закреплять
* stickyClassName: 'sticky' — класс для фиксации блока
*/
$.fn.sticky = function(options) {
var elem = this;
options = $.extend({
stickyOffsetTop: 0,
stickyClassName: 'sticky'
}, options);
return this.each(function() {
if (elem.length) {
var positionBlock = elem.parent().offset().top;
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll > positionBlock - options.stickyOffsetTop) {
elem.addClass(options.stickyClassName);
if (scroll > $('main').offset().top + $('main').height()) {
elem.removeClass(options.stickyClassName);
}
} else if (scroll < positionBlock) {
elem.removeClass(options.stickyClassName);
}
});
$(window).trigger('scroll');
$(window).resize(function() {
positionBlock = elem.parent().offset().top;
});
}
});
}