Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с кодом javascript (https://javascript.ru/forum/misc/64614-problema-s-kodom-javascript.html)

javamen 25.08.2016 10:35

Проблема с кодом javascript
 
Привет ребята, я не могу понять одного:

имеется рабочий код скрипта:

$(function () {
    var a = $("#news_content,#otsivi_content");
    var c = a.offset(),
        marginTop = parseFloat(a.css('marginTop'))||0,
        d = Math.max($(a[0]).outerHeight(!0), $(a[1]).outerHeight(!0)),
        e = $("#contant_bottom").parents('tr').offset();
    if(c.top+d + 10 >= e.top+marginTop ) return;
    a.css({position:'fixed'});
    $(window).scroll(function () {
        var b = $(this).scrollTop();
        if(c.top > b && b < e.top - d) a.css({top : (c.top - b - marginTop)+'px'
        })
        else if (b < e.top - d + marginTop) a.css({top: -marginTop +'px'})
        else a.css({top: (e.top - d  - b) +'px'})
 
    })
});


В нем два блока (#news_content, #otsivi_content) при прокрутке страницы прилипают к верху экрана и идут до нижнего блока (#contant_bottom), затем останавливаются.
Вопрос:
Скажите, как сделать так, чтобы прилипал не к самому верху, а смещено допустим на 100 пикселей от верха. Я голову ломаю не могу понять. Я не сам писал этот скрипт. Извините, если написал не туда, просто очень нужна помощь!:help: :help:

рони 25.08.2016 10:57

javamen, попробуйте так
marginTop = (parseFloat(a.css('marginTop'))||0) + 100,

javamen 25.08.2016 11:09

Меняю по вашему примеру код, перестает работать скрипт вообще):(

рони 25.08.2016 11:17

javamen,
ссылку в личку скиньте.
или +100 замените на -100

javamen 25.08.2016 13:13

я изменил параметры
else if (b < e.top - d + marginTop) a.css({top: -marginTop +'px'})
        else a.css({top: (e.top - d  - b) +'px'})



на
else if (b < e.top - d + marginTop) a.css({top: -marginTop +100 +'px'})
        else a.css({top: (e.top - d  - b) + 100 +'px'})


Получилось, но не совсем то что мне нужно. Теперь при прокручивании страницы до нужного мне блока как только он касается верха экрана сразу прыгает на +100 пикселей вниз и закрепляется. А мне нужно что бы касался не верха экрана а +100 пикселей от него.

рони 25.08.2016 14:31

javamen,
$(function () {
    var a = $("#news_content,#otsivi_content");
    var c = a.offset(),
         marginTop = (parseFloat(a.css('marginTop'))||0),
        d = Math.max($(a[0]).outerHeight(!0), $(a[1]).outerHeight(!0)),
        e = $("#contant_bottom").parents('tr').offset();
    if(c.top+d + 10 >= e.top+marginTop ) return;
    a.css({position:'fixed'});
    $(window).scroll(function () {
        var b = $(this).scrollTop();
        if(c.top - 100 > b && b < e.top - d) a.css({top : (c.top - b - marginTop ) +'px'
        })
        else if (b < e.top - d + marginTop - 100) a.css({top: -marginTop + 100  +'px'})
        else a.css({top: (e.top - d  - b) +'px'})

    })
});

javamen 25.08.2016 19:48

Спасибо тебе Рони огромное, все заработало)))

рони 25.08.2016 20:04

Цитата:

Сообщение от javamen
Я не сам писал этот скрипт.

:lol: ох, знаю я того кодера!


Часовой пояс GMT +3, время: 11:55.