Проблема с jQuery Sticky Nav и адаптивным дизайном
У меня возникла проблема, которую я не могу исправить с помощью этого кода, который я использую, чтобы добиться липкой навигации при прокрутке страницы.
Я хочу, чтобы js ничего не делал. Если ширина окна браузера меньше 720px, он работает, но только при первой загрузке страницы. Я имею в виду, если я изменяю размер окна, когда активна липкая навигация, она все еще остается активной, даже когда я изменяю размер окна ниже 720px. Вот jQuery:
//Sticky Navi
jQuery(function($) {
// grab the initial top offset of the navigation
var sticky_navigation_offset_top = $('.main-navigation').offset().top;
var browserWidth = $( window ).width();
// our function that decides weather the navigation bar should have "fixed" css position or not.
var sticky_navigation = function(){
var scroll_top = $(window).scrollTop(); // our current vertical position from the top
// if we've scrolled more than the navigation, change its position to fixed to stick to top,
// otherwise change it back to relative
if (scroll_top > sticky_navigation_offset_top && browserWidth > 720) {
$('.main-navigation').css({ 'position': 'fixed', 'top':0, 'z-index':999999, 'opacity': 0.9, 'box-shadow': '0px 3px 5px #393939' })
} else {
$('.main-navigation').css({ 'position': 'relative', 'opacity': 1, 'box-shadow': 'none' });
}
};
// run our function on load
sticky_navigation();
// and run it again every time you scroll
$(window).scroll(function() {
sticky_navigation();
});
});
Спасибо за вашу помощь
1 ответ
Как я уже сказал в комментарии, я не могу многое сделать без вашего HTML и CSS, но вот кое-что, что работает. У вас была странная функция, которую нужно было исправить.
function sticky_navigation() {
// grab the initial top offset of the navigation
var sticky_navigation_offset_top = $('.main-navigation').offset().top;
var browserWidth = $(window).width();
var scroll_top = $(window).scrollTop(); // our current vertical position from the top
// if we've scrolled more than the navigation, change its position to fixed to stick to top,
// otherwise change it back to relative
if ((scroll_top > $('.main-navigation').height()) && (browserWidth > 720)) {
$('.main-navigation').css({ 'position': 'fixed', 'top':0, 'z-index':999999, 'opacity': 0.9, 'box-shadow': '0px 3px 5px #393939' });
} else {
$('.main-navigation').css({ 'position': 'relative', 'opacity': 1, 'box-shadow': 'none' });
}
};
// and run it again every time you scroll
$(window).scroll(function() {
sticky_navigation();
});
Возиться с ненужным HTML: http://jsfiddle.net/cm4t6/