2012-04-03 11 views
0

Ich muss ein verblassendes Hintergrundbild erstellen, das sich ausdehnt, um den Browser zu füllen. Der folgende Code funktioniert perfekt in jedem einzelnen Browser außer IE8 und darunter. Das IE8 Problem ist, dass ich es verblassen kann, aber nicht strecken oder dehnen, aber nicht verblassen - nicht beides gleichzeitig.Fading Bild Hintergrund mit gestreckten BG in IE8 (Javascript und CSS)

DER JAVASCRIPT

$(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); 
} 

}); 

Hier ist die Linie, die ich hinzugefügt, um es in IE8 (und unten) zu machen strecken, aber es bricht die Fading-Funktionalität. Es wäre toll, wenn IE8 "background-size" unterstützt, tut es aber nicht.

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

DER CSS/HTML

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

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

Ich hoffe, es gibt eine Lösung sowohl Strecke ist und die Hintergrundbilder in IE8 verblassen. Wenn die Lösung nur in IE8 aber nicht in IE7 oder darunter funktioniert, ist das in Ordnung. IE8 und höher ist meine einzige Sorge im Moment. Danke im Voraus!

Antwort

1

Von was ich sehen kann, verwenden Sie die Hintergrund-Eigenschaft auf einem HTML-Element. Was, wenn Sie stattdessen versuchen, ein Bildelement zu verwenden und es einfach hinter Ihren Inhalt zu legen. Ich würde denken, dass Sie in der Lage sein sollten, nur Breite und Höhe einzustellen, kein Problem (sogar in IE8) und dann jQuery's .fade() verwenden oder die Deckkraft animieren.

+0

Vielen Dank für Ihre Antwort ... Ich glaube nicht, dass für funktioniert, was ich brauche, weil ich es als Hintergrund halten wollen, so kann ich „Hintergrund- Größe: Bezug ". Dies skaliert das Bild proportional ohne Verzerrung und zwar für jeden Browser außer IE8. Dieser Filter, den ich hinzugefügt habe, wirkt nur IE und funktioniert gut (streckt das Bild), aber es bricht nur die Fading-Funktionalität. –

+0

Halten Sie es als ein Bild "geschichtet" in der Rückseite können Sie 'width: 100%' und 'height: auto' verwenden. Das sollte die Proportionalität skalieren und ich denke, das funktioniert sogar so weit zurück wie IE8. Außerdem habe ich festgestellt, dass das Einstellen der Hintergrundskalierung in einigen Fällen die Leistung beeinträchtigen kann, wenn Animationen erstellt werden. – tmartineau

+0

Das hat funktioniert. Vielen Dank. Hier ist der aktualisierte Code. HTML: CSS: img # bgFade { \t position: fixed; \t oben: 0px; \t links: 0; \t Breite: 100%; \t Höhe: Auto; \t Z-Index: -1; } JavaScript Funktion changeImg() {. $ ('# bgFade') animieren ({Opazität: 0}, 1000, function() { $ (this) .attr ('src', preloadArr [ currImg ++% preloadArr.length] .src); }). animate ({Opazität: 1}, 1000); } Vielen Dank nochmal !!!!! –

0

Dieser Filterwert-String sieht nicht ganz richtig aus.

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

Versuchen:

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

Vielen Dank für Ihre Antwort .... Diese Codezeile funktioniert gut, es bricht nur die Fading-Funktionalität. Wenn ich diese Zeile entferne, blendet sie sich gut aus - Wenn ich sie belasse, streckt sie das Bild richtig, aber keine verblassende Animation. –