2016-03-25 22 views
3

私は漫画スタジオ用のWebページを作成しようとしています。これまでのところ、私はCSSCssアニメーションランダム遅延

 .charc { 
      animation:peek 20s infinite; 
      left:-500px 
     } 

     @-webkit-keyframes peek{ 
      1% {transform:translateX(-500px)} 
      10%{transform:translateX(100px)} 
      20% {transform:translateX(-200px)} 
      100% {transform:translateX(-500px)} 
     } 

とhtml

<img src="character.jpg" class="charc"/> 

でこれを持っているこれは、文字が何度も繰り返しに来ることを意味します。私はそれがCSSでランダムな数字を得ることが可能かどうかはわかりませんが、私はそれがあると思ったあなたは知っていたでしょう

p.s.私はこれがクロムでのみ動作することを知っているが、私はすぐにそれを変更する予定です。

+2

js/jQueryを使用して、アニメーションをランダムに繰り返します。 Cssには乱数発生器はありません – Justinas

+0

コードは –

+0

となります。Sassには乱数を得ることができる関数があります。 – NiZa

答えて

1

js/jQueryを使用する必要があります。

function move() { 
 
     $('.charc') 
 
     .animate({ 
 
      left: '-500px' 
 
     }, 200) 
 
     .animate({ 
 
      left: '100px' 
 
     }, 400) 
 
     .animate({ 
 
      left: '50px' 
 
     }, 400) 
 
     .animate({ 
 
      left: '-500px' 
 
     }, 100, function() { 
 
      var nextIn = Math.floor(Math.random() * 1000); 
 
      setTimeout('move()', nextIn); 
 
     }) 
 
    } 
 

 
    $(document).ready(function() { 
 
     move(); 
 
    });
#scene { 
 
    width: 500px; 
 
    height: 100px; 
 
    border: 2px solid black; 
 
    margin: 20px; 
 
} 
 
.charc { 
 
    position: absolute; 
 
    left: -500px; 
 
    top: 20px; 
 
    width: 20px; 
 
    height: 20px; 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="scene"> 
 
    <div class="charc"></div> 
 
</div>

1

それはJSで可能です:

var divElement = document.getElementsByClassName("charc")[0]; 
    var maxValue = 20; //the random value won't exceed 20s 
    function randomTime(maxvalue){ 
     return Math.round(Math.random() * maxvalue); 
    } 
    function changeAnimationTime(maxValue){ 
     var random = randomTime(maxValue); 
     divElement.style.animation = "peek "+randomTime+"s infinite"; 
     setTimeout(function(){ 
      changeAnimationTime(maxValue); 
     },random); 
    } 

    changeAnimationTime(maxValue); 

このMethodeのの利点は、あなたがアニメーションのためにちょうど値を生成するためのJSを使用しないことです。したがって、リソースの消費が少なくなります。

+1

'divElement'はNodeListなので、1つ以上のモードを含んでいてもエラーになります。関数で使用する単一ノードを指定するか、指定されたNodeListを反復処理する必要があります。 –

+0

あなたは正しいですDavid、私は自分のコードをテストしていないし、多くのjqueryを使用することは正直です。だから私はそれを忘れてしまった。 – rsabir

+1

btwの場合は、個々のアニメーションプロパティを 'divElement.style.animationDuration = randomTime +" s "'または 'divElement.style.animationDelay = randomTime +" s "'(あなたが行っている味に応じて)に設定することもできます。アニメーション名と反復回数をCSSのままにしておきます。 –

1

ランダムな遅延ではありませんが、WAIT! Animateと呼ばれる作成したツールを使用して、アニメーションの間に一時停止を追加することができます。

.peek.wait2.animated { 
    animation: peek-wait2 22s linear infinite; 
    transform-origin: 50% 50% 
} 
@keyframes peek-wait2 { 
    0% { transform:translateX(-500px) } 
    9.09091% { transform:translateX(100px) } 
    18.18182% { transform:translateX(-200px) } 
    90.90909% { transform:translateX(-500px) } 
    100% { transform:translateX(-500px) } 
} 

、休止期間を変更するWAIT! Animateを使用します。ここでは、アニメーションの間に2秒間のポーズとアニメーションです。

PS。アニメーションのちらつきを避けるため、0%から開始することをお勧めします。

+0

(あなたが認めているように)質問に本当に答えることはできませんが、あなたのアニメーション電卓はかなり役に立ちます。私はあなたが提供するサンプルアニメーションが特に好きです。将来の使用のためにブックマークします。 – brichins