Solus_Rex
Постоялец
- Регистрация
- 15 Янв 2012
- Сообщения
- 418
- Реакции
- 198
Спасибо, что выложили код, а не поделитесь ещё стилями и html, а то чего-то у меня не выходит её запустить... ни в файле ни на codepen.Благодарю всех, кто откликнулся. Уже удалось найти решение на форуме javascript.ru, огромная благодарность за это форумчанину Рони.
Собственно весь рабочий код:
Код:<?php if(1 != @$_COOKIE['no_fixed_block']) : ?> <script type="text/javascript">// <![CDATA[ $(function() { if($.cookie("no_fixed_block") != 1) { var offset = $("#fixed").offset(); var topPadding = 10, bottomPadding = 260; // доработка - высота над которой остановится блок (иначе будет сдвигать вниз до бесконечности). $(window).scroll(function() { if ($(window).scrollTop() > offset.top) { if ($(document).height() - bottomPadding > $(window).scrollTop() + $("#fixed").height()) // доработка - строчка кода, которая отвечает за остановку блока. $("#fixed").stop().animate({marginTop: $(window).scrollTop() - offset.top + topPadding}); // если .animate заменить на .css, то блок будет двигаться без анимации (задержки). } else {$("#fixed").stop().animate({marginTop: 1});};}); // если .animate заменить на .css, то блок будет двигаться без анимации (задержки). } }); // ]]></script> <script type="text/javascript">// <![CDATA[ function close_fixed_block() { $.cookie("no_fixed_block", 1, { expires : 1 }); $('#fixed').hide(); } // ]]></script> <div id="fixed"> <div id="close"><a href="#" onclick="close_fixed_block(); return false;">Закрыть блок</a></div> .....Содержимое блока...... </div> <?php endif; ?>
Как оказалось в скрипт нужно было добавить bottomPadding = 260; (260 - высота над которой остановится блок) и if ($(document).height() - bottomPadding > $(window).scrollTop() + $("#fixed").height()). В стилях ничего менять не пришлось, только сам скрипт.
Также по ходу удалось выяснить, как можно отключать анимацию (задержку) блока, чтобы он просто прилипал. Нужно в скрипте .animate заменить на .css.
Буду рад, если это решение кому-то пригодится!
Оно с position: relative не плавает нифига.
Последнее редактирование: