2016-12-15 16 views
2

私は無限ループでjQueryのアニメーションを扱っていますし、私のコードは以下の通りです:jQueryで無限ループを作成する方法は?

var width = $(document).width() - $('#mydiv').width(); 
 
$(document).ready(function() { 
 
    function animateMydiv() { 
 
    $('#mydiv').animate({ 
 
     'left': width + 'px' 
 
     }, 9000, 
 

 
     function() { 
 
     $('#test').css({ 
 
      opacity: 1.0, 
 
      visibility: "visible" 
 
     }, 9000).animate({ 
 
      opacity: 0 
 
     }, 9000); 
 
     }).animate({ 
 
     'left': '0px' 
 
    }, 9000); 
 
    } 
 

 
    animateMydiv(); 
 
});
#mydiv { 
 
    width: 40px; 
 
    height: 40px; 
 
    position: absolute; 
 
    left: 0; 
 
    background: black; 
 
} 
 
#test { 
 
    visibility: hidden; 
 
    position: absolute; 
 
    left: 0; 
 
    top: 50; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="mydiv"></div> 
 
<p id="test"> 
 
    Hi welcome...!! 
 
</p>

私は無限ループにanimateMydiv()を使用しますが、それは働いていません。あなたがこれを行うことができます

+1

'しかし、それは働いていません」、定義されていないと定義し、エラーを投げますか? – iHasCodeForU

+0

jsfiddleで追加 –

+0

これは一度だけアニメーション化したい、無限にしたい –

答えて

1

function animateMydiv() { 
    $('#mydiv').animate({'left': width + 'px'}, 9000, function(){ 
     $('#test').css({opacity:1.0, visibility:"visible"}, 9000).animate({opacity: 0}, 9000); 
    }).animate({'left': '0px'}, 9000, animateMydiv); 
} 

DEMO

1

var width = $(document).width() - $('#mydiv').width(); 
 
$(document).ready(function() { 
 
    function animateMydiv() { 
 
    $('#mydiv').animate({ 
 
     'left': width + 'px' 
 
     }, 9000, 
 

 
     function() { 
 
     $('#test').css({ 
 
      opacity: 1.0, 
 
      visibility: "visible" 
 
     }, 9000).animate({ 
 
      opacity: 0 
 
     }, 9000); 
 
     }).animate({ 
 
     'left': '0px' 
 
    }, 9000); 
 
window.setTimeout(animateMydiv, 100); 
 
    } 
 

 
    window.setTimeout(animateMydiv, 100); 
 
});
#mydiv { 
 
    width: 40px; 
 
    height: 40px; 
 
    position: absolute; 
 
    left: 0; 
 
    background: black; 
 
} 
 
#test { 
 
    visibility: hidden; 
 
    position: absolute; 
 
    left: 0; 
 
    top: 50; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="mydiv"></div> 
 
<p id="test"> 
 
    Hi welcome...!! 
 
</p>

2

JSコードの必要はここにありませんが、あなたが使って一人でCSSを使ってやっているものを達成することができます@keyframesおよびanimation。あなたは、コールバック関数の詳細はhereを見つけることができ、同じ関数にコールバック関数を使用することができます

#mydiv { 
 
    width: 40px; 
 
    height: 40px; 
 
    position: absolute; 
 
    left: 0; 
 
    background: black; 
 
    animation: slider 9s infinite; 
 
} 
 
#test { 
 
    opacity: 0; 
 
    position: absolute; 
 
    left: 0; 
 
    top: 50; 
 
    animation: blinker 9s infinite; 
 
} 
 
@keyframes slider { 
 
    0% { left: 0; } 
 
    50% { left: 95%; } 
 
    100% { left: 0; } 
 
} 
 
@keyframes blinker { 
 
    50% { opacity: 0; } 
 
    55% { opacity: 1; } 
 
    100% { opacity: 0; } 
 
}
<div id="mydiv"></div> 
 
<p id="test"> 
 
    Hi welcome...!! 
 
</p>

1

:これを試してみてください。ここにはdemoがあります。

var width = $(document).width() - $('#mydiv').width(); 
 
$(document).ready(function() { 
 
    function animateMydiv() { 
 
     $('#mydiv').animate({ 
 
       'left': width + 'px' 
 
      }, 9000, 
 

 
      function() { 
 
       $('#test').css({ 
 
        opacity: 1.0, 
 
        visibility: "visible" 
 
       }, 9000).animate({ 
 
        opacity: 0 
 
       }, 9000); 
 
      }).animate({ 
 
      'left': '0px' 
 
     }, 9000,animateMydiv); 
 
    } 
 
    animateMydiv(); 
 
});
#mydiv 
 
{ 
 
width:40px; 
 
height:40px; 
 
position:absolute; 
 
left:0; 
 
background: black; 
 
} 
 

 
#test 
 
{ 
 
visibility: hidden; 
 
position:absolute; 
 
left:0; 
 
top:50; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script> 
 

 
<div id="mydiv"> 
 
</div> 
 
<p id="test"> 
 
Hi welcome...!! 
 
</p>

1

は、私は上記のjqueryので

window.setInterval(animateMydiv, 9000); 

を使用して、このための答えを得ました..!

+0

var width = $(document).width() - $( '#mydiv')の幅をどのように計算するかは任意です。私はこのアニメーションもモバイル用にしたいから –

関連する問題