Фиксированный плавающий блок при скролле

08 Ноября 2018
javascript

Иногда требуется сделать так, чтобы при прокрутке страницы определенный блок плавал вместе с прокруткой контента.

Самое простое решение - устанавливаем отступ сверху блока равный прокрутке.

  1. Подключить jQuery
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    
  2. Вставить следующий скрипт

    $ (document).ready(function () { 
       var el = $ ('.fixed');
       var topPadding = 0;
       var offset = el.offset();
       $ (window).scroll(function() { 
            if ($ (window).scrollTop() > offset.top) { 
                el.stop().animate({ 
                    marginTop: $ (window).scrollTop() - offset.top + topPadding
                } );
            } else{ 
                el.stop().animate({ 
                    marginTop: 0
                } );
            } 
       } );
    } );
    

    el - плавающий элемент.

    topPadding - отступ от верхнего края страницы.

Пример