Фиксированное меню только по Y

296
16 января 2017, 22:00

Добрый день. Хочу сделать на сайте меню которое будет прилипать только при вертикальной прокрутке. Не могу понять как это сделать. Смотрел разные сайты, но там меню просто фиксируется и не не скроллится в любом направлении. Хочется что-то похожее на верхнее меню в вк.

Answer 1

Если я правильно понял, что за меню

var lastScrollTop = 0; 
$(window).scroll(function(event) { 
  var st = $(this).scrollTop(); 
  if (st > lastScrollTop) { 
    // downscroll code 
    if($('.menu').css('position')!= 'absolute'){ 
        $('.menu').css({position: 'absolute'}) 
         $('.menu').css({top:st}) 
    } 
     
    if ($('.menu').position().top + $('.menu').height() < st) { 
      $('.menu').css({ 
        top: st - $('.menu').height() 
      }) 
    } 
  } else { 
    // upscroll code 
    if($('.menu').position().top > st){ 
      $('.menu').css({position: 'fixed', top:0})  
    }else{ 
       
    } 
  } 
  lastScrollTop = st; 
});
body { 
  background: url(https://i.stack.imgur.com/fOLUM.jpg); 
  height: 5000px; 
  padding: 0; 
  margin: 0; 
} 
.menu { 
  position: absolute; 
  margin: 0; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<ul class=menu> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
  <li>Menu</li> 
</ul>

READ ALSO
Что делает этот код?

Что делает этот код?

Что попадает в переменную "s"? И если не сложно, то по шагам объяснить этот код (Ниже есть пояснения к коду, но они не достаточно ясные для меня)

324
jQuery. Как передать элемент в setTimeout

jQuery. Как передать элемент в setTimeout

Подписываюсь на событие click для всех кнопок с классом btnНужно, чтобы при клике нажатая кнопка становилась неактивной, а через 3 секунды становилась...

307