transition css opacité de fondu d'arrière-plan

je suis en train de faire un transition où elle se fond en blanc transparent, quand un utilisateur plane sur une image.

Mon problème est que j'ai besoin de changer la couleur, qu'elle se fane, noir. J'ai essayé tout simplement de simplement ajouter background:black; pour la classe qui contient le transition, mais ça ne marche pas de façon inattendue, ça s'efface toujours en blanc transparent.

Le code css que j'utilise est:

.hover:hover {
  opacity: 0.2;
}

.item-fade {
  background: black;
  opacity: 0.8;
  transition: opacity .25s ease-in-out;
  -moz-transition: opacity .25s ease-in-out;
  -webkit-transition: opacity .25s ease-in-out;
}
<p>Hover image, the white opacity needs to be black :/</p>
<img src="//placehold.it/100x100" class="hover item-fade" />
18
demandé sur Roko C. Buljan 2014-01-15 22:39:03

4 réponses

Enveloppez votre image dans un SPAN élément qui a le background: black;

.imgHolder{
  display: inline-block;
  background: #000;
}
.item-fade{
  vertical-align: top;
  transition: opacity 0.3s;
  -webkit-transition: opacity 0.3s;
  opacity: 1;
}
.item-fade:hover{
  opacity: 0.2;
}
<span class="imgHolder">
   <img class="item-fade" src="http://placehold.it/100x100/cf5" />
</span>
40
répondu Roko C. Buljan 2018-05-28 21:23:17

il ne s'efface pas en "noir transparent" ou "blanc transparent". C'est juste montrer quelle couleur est "derrière" l'image, qui est la couleur de fond de l'image - cette couleur est complètement cachée par l'image.

si vous voulez passer au noir(ish), vous aurez besoin d'un contenant noir autour de l'image. Quelque chose comme:

.ctr {
    margin: 0; 
    padding: 0;
    background-color: black;
    display: inline-block;
}

et

<div class="ctr"><img ... /></div>
4
répondu Paul Roub 2014-01-15 18:43:41

http://jsfiddle.net/6xJQq/13/

.container{
    display:inline-block;
    padding:5px;/*included padding to see background when img apacity is 100%*/
    background-color:black;
    opacity: 1;
}

.container:hover{
    background-color:red;
}
img{
    opacity: 1;
}
img:hover{
    opacity: 0.7;
}

.transition{
    transition: all .25s ease-in-out;
    -moz-transition: all .25s ease-in-out;
    -webkit-transition: all .25s 

}
0
répondu kasper Taeymans 2014-01-15 18:52:52

Veuillez noter que le problème n'est pas white la couleur. C'est parce que c'est d'être transparent.

Lorsqu'un élément est rendu transparent, toute l'opacité de son élément enfant; filtre alpha dans IE 6 7 etc, est changée à la nouvelle valeur.

vous ne pouvez donc pas dire qu'il est blanc!

vous pouvez placer un élément au-dessus de lui, et changer la transparence de cet élément en 1 tout en changeant la transparence de l'image en .2 ou quoi que ce soit que vous voulez.

0
répondu Afzaal Ahmad Zeeshan 2016-08-05 18:51:37