2016-11-17 2 views
-3

にアニメーションの背景のサイズと位置を設定したいが、私は私の背景のサイズと位置を設定するコードは次のとおりです。私はここのjavascript

$(document).ready(function() { 
    var header = $('body'); 

    //images 
    var backgrounds = new Array(
     'url(image1)', 'url(image2)', 'url(image3)', 'url(image4)' 
    ); 

    //animation 
    var current = 0; 

    function nextBackground() { 
     current++; 
     current = current % backgrounds.length; 
     header.css('background-image', backgrounds[current]); 
    } 
    setInterval(nextBackground, 7000); 

    header.css('background-image', backgrounds[0]); 

}); 

はどのように私はそれを行うことができますか?ある

Math.random()関数は、範囲内の浮動小数点、擬似乱数[0、1を返す):

+3

あるべき背景のサイズと位置を設定して、あなたの問題は何ですか?すでに 'css()'メソッドを使用していますか?また、すべての画像が同じ設定を共有している場合は、JSを経由するのではなく、スタイルシートでルールを設定するだけで済みます –

答えて

0

そのケースでは、ランダム関数を使用する必要がありますので、アニメーションをしたい場合0(包括)から1(除外)までは含まれません。これを希望の範囲に拡大することができます。実装は、乱数生成アルゴリズムの初期シードを選択します。ユーザーが選択またはリセットすることはできません。

JavaScriptの数字は最も近い偶数に丸められたIEEE 754浮動小数点数であり、以下の関数(Math.random()自体のものを除く)の主張範囲は正確ではありません。非常に大きい範囲(253以上)を選択すると、非常にまれなケースでは、通常排除された上限を計算することができます。

// Returns a random number between min (inclusive) and max (exclusive) 
function getRandomArbitrary(min, max) { 
    return Math.random() * (max - min) + min; 
} 

そして、あなたのコードが

$(document).ready(function() { 
    var header = $('body'); 

    //images 
    var backgrounds = new Array(
     'url(image1)', 'url(image2)', 'url(image3)', 'url(image4)' 
    ); 

    //animation 
    var current = 0; 

    function nextBackground() { 
     current++; 
     //current = current % backgrounds.length; 
     current = getRandomArbitrary(0,backgrounds.length; 
     header.css('background-image', backgrounds[current]); 
    } 
    setInterval(nextBackground, 7000); 

    header.css('background-image', backgrounds[0]); 

}); 

とあなたの方法どおり

$(document).ready(function() { 
    var header = $('body'); 

    //images 
    var backgrounds = new Array(
     'url(image1)', 'url(image2)', 'url(image3)', 'url(image4)' 
    ); 

    //animation 
    var current = 0;  

    function nextBackground() { 
    if(current>=backgrounds.length) 
    current = 0;    
     header.css('background-image', backgrounds[current]); 
     current++; 
    } 
    setInterval(nextBackground, 7000); 

    header.css('background-image', backgrounds[0]); 

});