Вопрос

У меня есть этот сценарий:

<div style="position:relative ;overflow:hidden ; height:195px;">
    <div style="position:absolute" class="scroll">
    {foreach from=$announce_list item=a}
        <div>
        <img src="imgsize.php?w=214&h=100&img=../uploads/announce/{$a.--------}.jpg"  />
        <h4 dir="rtl" style="padding-top:10px; padding-bottom:5px;">{$a.------}</h4>
        <p dir="rtl" style="text-align:justify ;line-height:17px;">{$a.---------|truncate:"300":"..." }</p>
        </div>
    {/foreach}
    </div>
</div>
{literal}
    <script>
        $(function(){
            function change_announce()
            {
                console.log('asdasdasd');
                var Scroll = $('.scroll') ;
                Scroll.children('div:first').animate({marginTop:'-195px' } , 1000 , 
                function(){
                    Scroll.children('div:first').appendTo(Scroll).css('marginTop' , '0px' ).fadeIn(2000); 
                }
                ); 

            }
            setInterval(change_announce , 3000) ;
        });
    </script>
{/literal}

На этой странице в правой панели сайта www.mahestan.ac.ir в этой демонстрации анимация выполняется не полностью после того, как скрыт второй div, следующий div не завершает анимацию, и происходит внезапный скачок!

Это было полезно?

Решение

Обновить: При дальнейшей проверке вашего кода я обнаружил, что причина небольшого скачка именно в этом.В анимации вы прокручиваете DIV в нужное положение -195px которая является высотой .scroll див.

Тем не менее, у вас есть padding-top:10px и padding-bottom:5px принимать во внимание.По этой причине вам необходимо добавить -15px к числу, составляющему в общей сложности -210px вместо того , чтобы -195px.

Измените эту строку:

Scroll.children('div:first').animate({marginTop:'-195px' } , 1000 ,

Для:

Scroll.children('div:first').animate({marginTop:'-210px' } , 1000,
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top