Estoy tratando de hacer un efecto de "fundido de entrada y salida" utilizando la transición CSS. Pero no puedo hacer que esto funcione con la imagen de fondo ...
El CSS:
.title a {
display: block;
width: 340px;
height: 338px;
color: black;
background: transparent;
/* TRANSITION */
-webkit-transition: background 1s;
-moz-transition: background 1s;
-o-transition: background 1s;
transition: background 1s;
}
.title a:hover {
background: transparent;
background: url(https://lh3.googleusercontent.com/-p1nr1fkWKUo/T0zUp5CLO3I/AAAAAAAAAWg/jDiQ0cUBuKA/s800/red-pattern.png) repeat;
/* TRANSITION */
-webkit-transition: background 1s;
-moz-transition: background 1s;
-o-transition: background 1s;
transition: background 1s;
}
Eche un vistazo: http://jsfiddle.net/AK3La/
css
background
background-image
css-transitions
Nick Zani
fuente
fuente
background-image
no es una propiedad animable ( w3.org/TR/css3-transitions/#animatable-properties ), por lo que su solución no es compatible con el estándar.background
, y esto es lo que debería usarse (funciona en Chrome para mí). Tal vez la especificación (o el impl) haya cambiado desde que se publicó la preguntaLa solución (que encontré yo mismo) es un truco ninja, te puedo ofrecer dos formas:
primero debe crear un "contenedor" para el
<img>
, contendrá los estados normal y de desplazamiento al mismo tiempo:con selectores CSS3 http://jsfiddle.net/eD2zL/1/ (si usa este, el estado "normal" será el primer hijo de su contenedor, o cambie el
nth-child()
orden)Solución CSS2 http://jsfiddle.net/eD2zL/2/ (las diferencias entre ellas son solo algunos selectores)
Básicamente, debes ocultar el estado "normal" y mostrar su "desplazamiento" cuando lo colocas.
y eso es todo, espero que alguien lo encuentre útil.
fuente
He descubierto una solución que funcionó para mí ...
Si tiene un elemento de lista (o div) que contiene solo el enlace, digamos que esto es para enlaces sociales en su página a Facebook, Twitter, etc. y estás usando una imagen de sprite, puedes hacer esto:
Convierte el fondo "li" en tu imagen de botón
Luego, haga que la imagen de fondo del enlace sea el estado de desplazamiento del botón. También agregue el atributo de opacidad a esto y configúrelo en 0.
Ahora todo lo que necesita es "opacidad" debajo de "a: hover" y establecer esto en 1.
Agregue los atributos de transición de opacidad para cada navegador a "a" y "a: hover" para que el CSS final se vea así:
Si lo expliqué correctamente, debería permitirle tener un botón de imagen de fondo que se desvanece, ¡espero que al menos ayude!
fuente
Desafortunadamente, no puede usar la transición
background-image
, consulte la lista de propiedades animables de w3c .Es posible que desee hacer algunos trucos con
background-position
.fuente
Puede usar un pseudo elemento para obtener el efecto que desea, como lo hice en ese Fiddle .
CSS:
HTML:
fuente
:after
elemento, intente configurarwidth
yheight
como en100%
lugar deinherit
, 2) sibackground-image
realmente se muestra en primer plano , use un índice negativo para el:after
elemento:z-index: -1;
Si puede usar jQuery, puede probar el complemento BgSwitcher para cambiar la imagen de fondo con efectos, es muy fácil de usar.
Por ejemplo :
Y agregue su propio efecto, vea agregar tipos de efectos
fuente
Pruebe esto, hará que la animación de fondo funcione en la web pero la aplicación móvil híbrida no funcione
fuente
Teniendo en cuenta que las imágenes de fondo no se pueden animar, creé una pequeña mezcla de SCSS que permite la transición entre 2 imágenes de fondo diferentes usando pseudo selectores antes y después . Están en diferentes capas de índice Z. El que está adelante comienza con opacidad 0 y se vuelve visible con el mouse.
También puede usar el mismo enfoque para crear animaciones con gradientes lineales.
scss
Ahora puedes usarlo simplemente con
Puedes consultarlo aquí: https://jsfiddle.net/pablosgpacheco/01rmg0qL/
fuente
Si animar
opacity
no es una opción, también puede animarbackground-size
.Por ejemplo, utilicé este CSS para configurar un
backgound-image
con un retraso.fuente
.after
adentro.before
para la imagen de fondo, debe establecer la imagen de fondo en el formato.before
. De lo contrario, simplemente desaparecerá sin animación.Salam, esta respuesta solo funciona en Chrome, porque IE y FF admiten la transición de color.
No es necesario crear sus elementos HTML
opacity:0
, ya que algunas veces contienen texto y no es necesario duplicar sus elementos.La pregunta con relación a un ejemplo en jsFiddle necesita un pequeño cambio, que es poner una imagen vacía en
.title a
comobackground:url(link to an empty image);
mismo que lo pones en.title a:hover
pero que sea imagen vacía, y el código funcionará.Mira esto https://jsfiddle.net/Tobasi/vv8q9hum/
fuente
Con la inspiradora publicación de Chris aquí:
https://css-tricks.com/different-transitions-for-hover-on-hover-off/
Me las arreglé para llegar a esto:
fuente
Esto se puede lograr con una mayor compatibilidad entre navegadores que la respuesta aceptada mediante el uso de pseudoelementos como se ejemplifica en esta respuesta: https://stackoverflow.com/a/19818268/2602816
fuente
Estuve luchando con esto por un momento, primero usé una pila de imágenes una encima de la otra y cada tres segundos, estaba tratando de animar a la siguiente imagen de la pila y arrojar la imagen actual al final de la pila. Al mismo tiempo, estaba usando animaciones como se muestra arriba. No pude hacer que funcionara por mi vida.
Puede usar esta biblioteca que permite ** imagen de fondo con capacidad de presentación de diapositivas redimensionada dinámicamente ** usando jquery-backstretch.
https://github.com/jquery-backstretch/jquery-backstretch
fuente