ユーザーが画像にカーソルを合わせているときに、透明な白にフェードするtransition
を実行しています。
私の問題は、色を黒にフェードするように変更する必要があることです。私は単にbackground:black;
をtransition
を含むクラスに追加しようとしましたが、それは不自然に機能せず、まだ白い透明にフェードインしています。
私が使用しているCSSコードは次のとおりです。
.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" />
画像をbackground: black;
を持つSPAN
要素にラップします
.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>
「黒透明」または「白透明」にフェードしません。画像の「背後」にある色を表示しています。これはnot画像の背景色です。その色は画像によって完全に隠されています。
黒にフェッシュしたい場合は、画像の周りに黒のコンテナが必要です。何かのようなもの:
.ctr {
margin: 0;
padding: 0;
background-color: black;
display: inline-block;
}
そして
<div class="ctr"><img ... /></div>
.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
}
問題はwhite
色ではないことに注意してください。それは透明だからです。
要素を透明にすると、その子要素のすべての不透明度。 IE 6 7などのアルファフィルターは、新しい値に変更されます。
だから、それが白いと言うことはできません!
その上に要素を配置し、その要素の透明度を1
に変更しながら、画像の透明度を.2
に変更できます。