2012-04-03 6 views
0

ブラウザを埋めるために伸びるフェードバックグラウンドイメージを作成する必要があります。次のコードはIE8以下を除くすべての単一ブラウザで完全に動作します。 IE8の問題は、私がフェードすることができますが、ストレッチやストレッチはできますが、フェードすることはできません - 同時に両方ではありません。ここTHE JAVASCRIPTIE8(JavascriptとCSS)で伸ばしたBGで背景をフェードアウトする

$(document).ready(function(){ 

    var imgArr = new Array(// relative paths of images 
     'images/bg01.jpg', 
     'images/bg02.jpg', 
     'images/bg03.jpg', 
     'images/bg04.jpg', 
     'images/bg05.jpg' 
    ); 


var preloadArr = new Array(); 
var i; 


/* preload images */ 
for(i=0; i < imgArr.length; i++){ 
    preloadArr[i] = new Image(); 
    preloadArr[i].src = imgArr[i]; 
} 

var currImg = 0; 
changeImg(); 
var intID = setInterval(changeImg, 7500); 

/* image rotator */ 
function changeImg(){ 
$('#bgFade').animate({opacity: 0}, 1000, function(){ 
$(this).css({ 
    'background':'url(' + preloadArr[currImg++%preloadArr.length].src +') center 49px', 
    '-webkit-background-size':'cover', 
    '-moz-background-size':'cover', 
    '-o-background-size':'cover', 
    'background-size':'cover', 
    'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+ preloadArr[currImg++%preloadArr.length].src +'\', sizingMethod=\'scale\'' 
    }); 
}).animate({opacity: 1}, 1000); 
} 

}); 

は、私はそれがIE8(および下記)に伸ばすように添加ラインですが、それはフェージングの機能を破ります。 IE8が "background-size"をサポートしていても、それはうまくいかないでしょう。

'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+ preloadArr[currImg++%preloadArr.length].src +'\', sizingMethod=\'scale\'' 

CSS/HTML

#bgFade { 
    position:fixed; 
    top:0; 
    left:0; 
    height:100%; 
    width:100%; 
    z-index:-1; 
} 

<div id="bgFade"></div> 

私はストレッチとIE8で背景画像をフェードの両方への解決策があると願っています。ソリューションがIE8でのみ動作し、IE7以下では動作しない場合は問題ありません。 IE8以上は私の唯一の関心事です。前もって感謝します!

答えて

1

html要素の背景プロパティを使用していることがわかりました。代わりに、イメージ要素を使用して、そのコンテンツの背後にレイヤーを重ねてみてください。私はあなたが問題なく(IE8でも)幅と高さを設定してから、jQueryの.fade()を使うか、不透明度をアニメーション化できるはずだと思います。

+0

はご回答いただきありがとうございます...私は、私が使用できるようにした背景として、それを維持したいので、私はそれは私が必要なもののために働くだろうとは思わない「バックグラウンドサイズ:カバー "。これにより、歪みのない画像が比例して拡大され、IE8以外のブラウザでも同様に表示されます。私がエフェクトIEだけを追加し、うまく動作する(画像を伸ばす)フィルターですが、フェーディング機能を破るだけです。 –

+0

バックグラウンドに「レイヤード」されたイメージとして、「幅:100%」と「高さ:オート」を使用できます。これは比例関係の拡大が必要で、私はこれがIE8ほどまでに機能していると思います。さらに、私はいくつかのケースでは、背景のスケーリングを設定するとアニメーションを行うときにパフォーマンスに影響を与えることがあることがわかりました。 – tmartineau

+0

それはうまくいった。どうもありがとうございました。ここに更新されたコードがあります。 HTML: CSS: IMG#bgFade { \t位置:固定。 \t top:0px; \t左:0; \t幅:100%; \t身長:自動; \t z-インデックス:-1; } のJavaScript 機能changeImg(){ $( '#1 bgFade')アニメーション({不透明度:0} 1000、関数(){ $(この).ATTR( 'SRC'、preloadArr [ curateImg ++ {{%}}};}}}アニメーション({opacity:1}、1000); } ありがとうございました!!!!! –

0

このフィルタ値文字列は正しく表示されません。

'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+ preloadArr[currImg++%preloadArr.length].src +'\', sizingMethod=\'scale\'' 

試してみてください。

'filter':"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + preloadArr[currImg++%preloadArr.length].src + "'), sizingMethod='scale'" 
+0

あなたの応答ありがとうございました....そのコード行は正常に機能し、フェーディング機能を破棄します。私がその線を取り除くと、それはうまく消える - 私がそれを残すと、画像は正しく伸びるが、フェードするアニメーションはない。 –

関連する問題