2016-12-01 25 views
0

私は、Navbarの背景画像がタイマーに設定された別の画像をシャッフルすることを望んでいました。シャッフルするようにしましたが、画像が消えるとメニューとロゴが消え、次の画像が現れると戻ってきます。私が持っているもう一つの問題は、画像が新しい画像にフェードしないが、それは空白になり、次の画像を示すということです。JQuery Navbar背景画像のシャッフルの問題

問題: 1)メニューとロゴは、背景イメージと共にフェードします。 2)次の画像に変更すると、背景画像が空白になります。

試してみました: 1)var要素ではなく、喜びはありません。私はロゴとメニューのために.ignoreというクラスを作成しました。 2)JQueryの新機能としてこれを解決する方法がわかりません。

のjQueryコード:

$(function(){ 
    var i =0; 
    var images = ['assets/img/storm-ocean-hurricane-florida-beach-coast-travel.jpg','assets/img/arctic_sunset.jpg','assets/img/fallflood.jpg','assets/img/landscape-with-fog-and-chimney-smoke-at-sunset.jpg']; 
    var image = $('.navbar').not('.ignore'); 
    image.css('background-image', 'url(assets/img/storm-ocean-hurricane-florida-beach-coast-travel.jpg)'); 
    setInterval(function(){ 
     image.fadeOut(1000, function() { 
      image.css('background-image', 'url(' + images[i] +')'); 
      image.fadeIn(1000); 
     }); 
     if(i == (images.length - 1)){ 
      i = 0; 
     } else { 
      i++; 
     } 
    }, 5000); 
}) 

The Menu follows the user down through the site and the logo stays where it is.

答えて

0

私はあなたのJSで明示的に何も悪いことを見ていないんだけど、私はあなたのnavbar内の新しいHTML要素を作成することによって、あなたの問題をすべて解決することができると思いますこれは、背景画像のみを保持することを意味し、他のすべての要素の背後に配置され、それらを妨げないようにします。マークアップは<div class="navbar__bg"></div>になります。

、このような要素は次のようになるためのCSS:

.navbar { 
    position: relative; /* needed to allow your bg element to properly position */ 
} 

.navbar__bg { 
    position: absolute; 
    top: 0; 
    left: 0; 
    right: 0; 
    bottom: 0; 
    z-index: -1; 
} 

そして、あなたがあなたのjQueryの4行目を変更したい:私が持っているもう一つの問題がある」

var image = $('.navbar__bg');

イメージが新しいイメージにフェードインしないが、ブランクになり、次のイメージが表示されます。

この場合、コードは現在完全にフェードアウトされ、イメージが変更されてからフェードインされます。2つのイメージをクロスフェードして相互にブレンドしますか?これは、複数の要素が同時にフェードインまたはフェードインする際に、複数の要素をオーバーラップさせる必要があります。 1つの要素上でbackground-imageを変更すると、クロスフェードを実行できません。

+0

アイブは前にdivアイデアをやってみましたが、私が望んでいたように画面全体を決して満たしませんでした。だからクロスフェードのために私は自分のセクションに別の背景画像を追加するだけでいいですか? – F0xcr4f7

+0

これらのleft/top/right/bottomプロパティを絶対配置で使用すると、画面全体を含めてdivに合わせてサイズを調整できます。それがうまく動作しない場合は、ここにJSFiddleを貼り付けてください。すぐに作業します。クロスフェードでは、絶対位置の2つの要素が重なり合っていなければなりません。両方ともバックグラウンド画像でなければなりません。そして、それらの間で不透明度を切り替えることになります(まだfadeIn/fadeOutを使用できます)。少ない作業でこれを達成するために使用できるjQueryスライドショープラグインが多数あります。 –

+0

Didnt work。それを小さなバーに縮小した。私はいくつかのものを混ぜて試してみました。その底には白いバーがあり、ビデオは – F0xcr4f7