@v-orlov

Как получить высоту элемента 1 раз на javascript?

есть большой хэдэр и контент под ним. когда страница скроллится до нижней границы хэдэра, по высоте он становится меньше и fixed.

<header>шапка</header>
<section>контент</section>


но при скролле возникает проблема с прыжком контента вверх, тк хэдэр был 500px, а теперь 0 (на деле 50px но фиксированный). как я пытаюсь решить

var height = $('header).height();

$(window).scroll(function () {
if ($(this).scrollTop() > height ) {
        $('header').addClass('stick');
        $('section').css('padding-top', height );
      } else {
        $('header').removeClass('stick');
        $('section').css('padding-top', 0);
      }
});


разумеется, эта переменная height при скролле меняется, тк и сам header при скролле меняется. и решение не работает. что я делаю не так? как мне эту переменную получать один раз при загрузке страницы? и чтобы функция скролла получала эту переменную, не меняя ее?
спасибо
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
https://jsfiddle.net/anton4ept/xk3sLhj4/
все прекрасно работает и ничего не пересчитывается.
Видимо, что-то не договариваете.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@v-orlov Автор вопроса
всем спасибо, что направили в сторону ошибки
действительно в дебрях скриптов была сколл-функция, которая отдельно завязана на этой высоте и задает ее дополнительно еще и скриптом (хотя есть стиль). в панели разработчика на высоту, задаваемую jsом совсем не обратил внимания.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы