JavaScript abandonment - Optimization option or less expensive features

I have this code and it works exactly the way I want. The menu bar is at the top and recognizes the section in which it is located. You can click links in the yellow menu to navigate between sections.

  • http://jsfiddle.net/spadez/2atkZ/9/
  • http://jsfiddle.net/spadez/2atkZ/9/embedded/result/

    $ (function () {

    var $select = $('#select');
    var $window = $(window);
    var isFixed = false;
    var init = $select.length ? $select.offset().top : 0;
    
    $window.scroll(function () {
        var currentScrollTop = $window.scrollTop();
        if (currentScrollTop > init && isFixed === false) {
            isFixed = true;
            $select.css({
                top: 0,
                position: 'fixed'
            });
            $('body').css('padding-top', $select.height());
        } else if (currentScrollTop <= init) {
            isFixed = false;
            $select.css('position', 'relative');
            $('#select span').removeClass('active');
            $('body').css('padding-top', 0);
        } 
    
    
        //active state in menu
        $('.section').each(function(){
            var eleDistance = $(this).offset().top;
            if (currentScrollTop >= eleDistance-$select.outerHeight()) {
                var makeActive = $(this).attr('id');
                $('#select span').removeClass('active');
                $('#select span.' + makeActive).addClass('active');
            }
        });
    });
    
    $(".nav").click(function (e) {
        var divId = $(this).data('sec');
        $('body').animate({
            scrollTop: $(divId).offset().top - $select.height()
        }, 500);
    });
    

    });

However, the code itself becomes pretty weak as soon as you start putting any content into fields. I wondered if it was possible to optimize the code and make it a little smoother.

+1
source share
1 answer

, ( ) ( ), .

, , - ( ).

+2

Source: https://habr.com/ru/post/1540684/


All Articles