2017-08-19 11 views
0

私は次の問題があります:<body>タグの異なる背景画像をタイマーでクロスフェードします。 here私が達成したいものの例を見ることができます。 問題は私がこれらのものを初めて使っているのですが、どうやってそれをするのか分かりません...私は多くの投稿を見ましたが、私はもっと混乱しました!体内のクロスフェードの背景画像

私のHTMLコード:

<body id="one" onload="startTimer()"> 
<!-- Some other tags --> 
</body> 
<script type = "text/javascript"> 
    function displayNextImage() { 
     x = (x === images.length - 1) ? 0 : x + 1; 
     var url = "url(" + images[x] + ")"; 
     $("#one").css('background-image', url); 
    } 

    function startTimer() { 
     setInterval(displayNextImage, 6000); 
    } 

    var images = [], x = -1; 
    images[0] = "someimage1.jpg"; 
    images[1] = "someimage2.jpg"; 
    images[2] = "someimage3.jpg"; 
</script> 

と私のCSSコード:

body { 
    background-image: url("images/forest1.jpeg"); 
    background-size: cover; 
} 

これらを行うには良い方法があります場合、私は、私が意味する、提案に開いている、素晴らしいです!私はちょうど上記のウェブと同じポイントを取得したい!

ありがとうございます!

答えて

2

あなたはCSSアニメーションでそれを達成することができ、任意のJavaScriptを必要としない:良い

body { 
 
    background-size: cover; 
 
} 
 

 
@-webkit-keyframes changeBckg { 
 
    0% { background-image: url("https://unsplash.it/1000?image=1080"); } 
 
    25% { background-image: url("https://unsplash.it/1000?image=1081"); } 
 
    50% { background-image: url("https://unsplash.it/1000?image=1064"); } 
 
    75% {background-image: url("https://unsplash.it/1000?image=1078"); } 
 
    100% {background-image: url("https://unsplash.it/1000?image=1080"); } 
 
} 
 

 
@keyframes changeBckg { 
 
    0% { background-image: url("https://unsplash.it/1000?image=1080"); } 
 
    25% { background-image: url("https://unsplash.it/1000?image=1081"); } 
 
    50% { background-image: url("https://unsplash.it/1000?image=1064"); } 
 
    75% {background-image: url("https://unsplash.it/1000?image=1078"); } 
 
    100% {background-image: url("https://unsplash.it/1000?image=1080"); } 
 
} 
 

 
.letterAnimation { 
 
    -webkit-animation: changeBckg 16s ease infinite; 
 
    animation: changeBckg 16s ease infinite; 
 
}
<body class="letterAnimation"> 
 
    
 
</body>

+0

を!提供されている例のように矢印キーを必要としない場合は、JSが必要です。 – Legends

+0

あなたのソリューションはかなり良いです、私は欲しいものを達成することができます!あなたが持っているブラウザのバージョンによってはうまくいかないかもしれませんが、それは@Teddsから独立していればいいのです。 – wj127

+0

確かに@ wj127、アニメーションのプロパティにはブラウザのプレフィックスが必要ですが、それは大きな問題ではありません。私はプレフィックスが含まれている分でスニペットを編集しています。申し訳ありませんが、私はあなたに警告しませんでした。 – Tedds

1

シンプルなCSSのみのソリューションで、CSSアニメーションを使用して動作します。@keyframes; HTMLページの本文に同じコードを適用することができます。

@keyframes cf4FadeInOut { 
 
    0% { 
 
    opacity: 1; 
 
    } 
 
    17% { 
 
    opacity: 1; 
 
    } 
 
    25% { 
 
    opacity: 0; 
 
    } 
 
    92% { 
 
    opacity: 0; 
 
    } 
 
    100% { 
 
    opacity: 1; 
 
    } 
 
} 
 

 
#cf4a img:nth-of-type(1) { 
 
    animation-delay: 6s; 
 
} 
 

 
#cf4a img:nth-of-type(2) { 
 
    animation-delay: 4s; 
 
} 
 

 
#cf4a img:nth-of-type(3) { 
 
    animation-delay: 2s; 
 
} 
 

 
#cf4a img:nth-of-type(4) { 
 
    animation-delay: 0; 
 
} 
 

 
#cf4a img { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    animation: cf4FadeInOut 5s infinite; 
 
}
<div id="cf4a" class="shadow cf4FadeInOut"> 
 
    <img src="https://placeimg.com/150/150/01"> 
 
    <img src="https://placeimg.com/150/150/02"> 
 
    <img src="https://placeimg.com/150/150/03"> 
 
    <img src="https://placeimg.com/150/150/04"> 
 
</div>