J'essaye de faire un "fondu en fondu en sortie" en utilisant la transition CSS. Mais je ne peux pas faire fonctionner cela avec l'image d'arrière-plan ...
Le 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;
}
Jetez un œil: http://jsfiddle.net/AK3La/
css
background
background-image
css-transitions
Nick Zani
la source
la source
background-image
n'est pas une propriété animable ( w3.org/TR/css3-transitions/#animatable-properties ), donc votre solution n'est pas conforme au standard.background
, et c'est ce qui devrait être utilisé (cela fonctionne dans Chrome pour moi). Peut-être que la spécification (ou l'impl) a changé depuis la publication de la questionLa solution (que j'ai trouvée par moi-même) est une astuce ninja, je peux vous proposer deux moyens:
vous devez d'abord créer un "conteneur" pour le
<img>
, il contiendra les états normal et survolé en même temps:avec les sélecteurs CSS3 http://jsfiddle.net/eD2zL/1/ (si vous utilisez celui-ci, l'état "normal" sera le premier enfant de votre conteneur, ou changez l'
nth-child()
ordre)Solution CSS2 http://jsfiddle.net/eD2zL/2/ (les différences entre ne sont que quelques sélecteurs)
En gros, vous devez masquer l'état «normal» et afficher leur «survol» lorsque vous le survolez
et c'est tout, j'espère que quelqu'un le trouvera utile.
la source
J'ai trouvé une solution qui a fonctionné pour moi ...
Si vous avez un élément de liste (ou div) contenant uniquement le lien, et disons que c'est pour les liens sociaux sur votre page vers Facebook, Twitter, etc. et vous utilisez une image de sprite, vous pouvez le faire:
Faire de l'arrière-plan "li" l'image de votre bouton
Faites ensuite de l'image d'arrière-plan du lien l'état de survol du bouton. Ajoutez également l'attribut d'opacité à cela et définissez-le sur 0.
Maintenant, tout ce dont vous avez besoin est "opacity" sous "a: hover" et réglez ceci sur 1.
Ajoutez les attributs de transition d'opacité de chaque navigateur à "a" et "a: hover" pour que le css final ressemble à ceci:
Si je l'ai expliqué correctement, cela devrait vous permettre d'avoir un bouton d'image d'arrière-plan qui s'estompe, j'espère que cela aide au moins!
la source
Malheureusement, vous ne pouvez pas utiliser la transition
background-image
, voir la liste w3c des propriétés animables .Vous voudrez peut-être faire quelques astuces avec
background-position
.la source
Vous pouvez utiliser un pseudo élément pour obtenir l'effet souhaité, comme je l'ai fait dans ce Fiddle .
CSS:
HTML:
la source
:after
élément, essayez de définirwidth
etheight
au100%
lieu deinherit
, 2) si lebackground-image
est réellement affiché au premier plan , utilisez un index négatif pour l':after
élément:z-index: -1;
Si vous pouvez utiliser jQuery, vous pouvez essayer le plugin BgSwitcher pour changer l'image d'arrière-plan avec des effets, c'est très facile à utiliser.
Par exemple :
Et ajoutez votre propre effet, voir l' ajout d'un type d'effet
la source
Essayez ceci, cela rendra l'arrière-plan animé fonctionnera sur le Web mais l'application mobile hybride ne fonctionnera pas
la source
Étant donné que les images d'arrière-plan ne peuvent pas être animées, j'ai créé un petit mixin SCSS permettant de faire la transition entre 2 images d'arrière-plan différentes à l'aide de pseudo sélecteurs avant et après . Ils se trouvent à différentes couches d'indice z. Celui qui est en avant commence par l'opacité 0 et devient visible avec le survol.
Vous pouvez également utiliser la même approche pour créer des animations avec des dégradés linéaires.
scss
Maintenant, vous pouvez simplement l'utiliser avec
Vous pouvez le vérifier ici: https://jsfiddle.net/pablosgpacheco/01rmg0qL/
la source
Si l'animation
opacity
n'est pas une option, vous pouvez également animerbackground-size
.Par exemple, j'ai utilisé ce CSS pour définir un
backgound-image
avec un délai.la source
.after
dans.before
pour l'image d'arrière-plan, vous devez définir l'image d'arrière-plan dans le.before
. Sinon, il disparaîtra simplement sans animation.Salam, cette réponse ne fonctionne que dans Chrome, car IE et FF prennent en charge la transition de couleur.
Il n'est pas nécessaire de créer vos éléments HTML
opacity:0
, car parfois ils contiennent du texte, et pas besoin de doubler vos éléments !.La question lien vers un exemple dans jsFiddle avait besoin d' un petit changement, qui est de mettre une image vide
.title a
commebackground:url(link to an empty image);
même que vous le mettre en.title a:hover
mais en faire l' image vide, et le code fonctionnera.Vérifiez ceci https://jsfiddle.net/Tobasi/vv8q9hum/
la source
Avec le post inspirant de Chris ici:
https://css-tricks.com/different-transitions-for-hover-on-hover-off/
J'ai réussi à trouver ceci:
la source
Cela peut être réalisé avec une meilleure prise en charge de plusieurs navigateurs que la réponse acceptée en utilisant des pseudo-éléments comme illustré par cette réponse: https://stackoverflow.com/a/19818268/2602816
la source
Je me débattais un peu avec cela, j'ai d'abord utilisé une pile d'images les unes sur les autres et toutes les trois secondes, j'essayais d'animer jusqu'à l'image suivante de la pile et de jeter l'image actuelle au bas de la pile. En même temps, j'utilisais des animations comme indiqué ci-dessus. Je n'ai pas pu le faire fonctionner pour ma vie.
Vous pouvez utiliser cette bibliothèque qui permet ** une image d'arrière-plan redimensionnée dynamiquement, capable de diaporama ** en utilisant jquery-backstretch.
https://github.com/jquery-backstretch/jquery-backstretch
la source