2011-02-15 19 views
41

cambiar Quiero desaparecer las imágenes cuando hago este código:cómo atenuar la imagen de fondo

$("#large-img").css('background-image', 'url('+$img+')'); 

He intentado poner desvanecimiento en tantos lugares.

Gracias

+0

@fade .. ¿cuál es su pregunta? ¿Estás preguntando cómo desvanecerse o has intentado desvanecer las imágenes con ese código? Por favor, menciónalo claramente. – Mihir

+0

Si '# large-img' no tiene contenido, entonces sugiero que se desvanezca todo el elemento, porque no se puede fundir una imagen de fondo individual. –

+0

@mihir Estoy intentando desvanecer la imagen de fondo anterior y la nueva imagen de fondo en – fadejquery

Respuesta

67

Esto es probablemente lo que quería:

$('#elem').fadeTo('slow', 0.3, function() 
{ 
    $(this).css('background-image', 'url(' + $img + ')'); 
}).fadeTo('slow', 1); 

Con un retraso de 1 segundo:

$('#elem').fadeTo('slow', 0.3, function() 
{ 
    $(this).css('background-image', 'url(' + $img + ')'); 
}).delay(1000).fadeTo('slow', 1); 
+0

Entiendo exactamente de dónde vienes, pero estoy cambiando el fondo de un elemento diferente. Hago clic en la miniatura y luego se cambia la imagen grande a la imagen de la miniatura – fadejquery

+1

ok, funcioné, pero a veces se va a desvanecer y aparece oscurecida o salta/corta entre las imágenes. no es tan fácil como me gustaría – fadejquery

+0

ok, lo he arreglado y se ha quedado atascado. ¿Cómo puedo hacer que se desvanezca la nueva imagen y desaparezca la otra imagen? – fadejquery

0

Opacity sirve para su propósito?

Si es así, intente esto:

$('#elem').css('opacity','0.3') 
+0

creo que mantendría la opacidad hasta que lo reinicie, lo intentaré de todos modos – fadejquery

0

Si su tratando de atenuar la imagen Backgound pero deja el primer plano del texto/las imágenes se puede utilizar CSS para separar la imagen de fondo en una nueva posición div y el div que contiene el texto/imágenes, luego se desvanece el fondo div.

+0

no lo necesito. Tengo un conjunto de imágenes en miniatura y cuando hago clic en la miniatura, se cambia el img grande del href de la miniatura. quiero que este cambio de imagen grande se desvanezca hacia adentro/hacia afuera. – fadejquery

+0

bien, ya veo. He usado el complemento lightbox para algo similar http://leandrovieira.com/projects/jquery/lightbox/ pero una vez más, no creo que eso sea exactamente lo que buscas. buena suerte. – iandayman

0

Esto puede ayudar a

HTML

<div id="textcontainer">   
    <span id="sometext">This is some information </span> 
    <div id="container"> 

    </div> 
</div> 

CSS

#textcontainer{ 
    position:relative; 
    border:1px solid #000; 
    width :300px; 
    height:300px; 
} 
#container{ 
    background-image :url("http://dcooper.org/gallery/cf_appicon.jpg"); 
    width :100%; 
    height:100%; 
} 
#sometext{ 
    position:absolute; 
    top:50%; 
    left:50%; 
} 

Js

$('#container').css('opacity','.1'); 
47

¿Puedo ofrecer una solución alternativa?

Tuve el mismo problema, y ​​el fundido no funcionó porque desvaneció todo el elemento, no solo el fondo. En mi caso, el elemento era cuerpo, por lo que solo quería desvanecer el fondo.

Una manera elegante de abordar esto es clasificar el elemento y usar la transición CSS3 para el fondo.

transition: background 0.5s linear;

Cuando se cambia el fondo, ya sea con o toggleClass con su código, $("#large-img").css('background-image', 'url('+$img+')'); se desvanecerá como se define por la clase.

+3

¿Cómo te está funcionando? Pensé que las imágenes de fondo no se podían transitar ... – ithil

+0

Esa fue una solución elegante, molestas css3 no admite transiciones de imágenes bg, aquí hay un método de CSS alternativo: http://www.mightymeta.co.uk/fading-button- background-images-with-css3-transitions/ – Alex

+1

no funciona en firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=546052 – linuscl

4

Sobre la base de la solución de Creative Group rampante arriba, yo estaba usando jQuery para cambiar la imagen de fondo del cuerpo de la etiqueta:

por ejemplo,

$('body').css({'background': 'url(/wp-content/themes/opdemand/img/bg-sea.jpg) fixed', 'background-size': '100% 100%'}); 

$('body').css({'background': 'url(/wp-content/themes/opdemand/img/bg-trees.jpg) fixed', 'background-size': '100% 100%'}); 

Tenía un temporizador de javascript que cambiaba entre las dos afirmaciones.

Todo lo que tenía que hacer para resolver el problema de crear un fadeOut -> efecto fadeIn fue sugerencia de uso desenfrenado del Grupo creativo y añada

transition: background 1.5s linear; 

a mi código. Ahora se desvanece y brilla maravillosamente.

¡Gracias Rampant Creative Group's y SoupEnvy por la edición!

19

Esto fue lo único razonable que encontré para fundir una imagen de fondo.

<div id="foo"> 
    <!-- some content here --> 
</div> 

Su CSS; ahora mejorado con CSS3 transition.

#foo { 
    background-image: url(a.jpg); 
    transition: background 1s linear; 
} 

Ahora intercambiar el fondo

document.getElementById("foo").style.backgroundImage = "url(b.jpg)"; 

Voilà, que se desvanece!


descargo de responsabilidad obvia: si su navegador no soporta la propiedad CSS3 transition, esto no va a funcionar. En ese caso, la imagen cambiará a sin una transición. Dados <1% del navegador de sus usuarios no son compatibles con CSS3, eso está bien. No te engañes a ti mismo, está bien.

+0

La mejor solución, tenía un montón de código combinando transiciones de colores de fondo, cambiando la imagen de fondo y más transiciones ....esta solución lo hace cada vez más fácil –

+0

Pero no puedo hacerlo funcionar en FF ¿? Aunque uso -moz-transition, ¿por qué? –