2 つの画像 (1 つは白黒、もう 1 つはカラー) を重ねて配置し、一方の画像の不透明度が減少し、もう一方の画像が増加する CSS トランジションを作成しました。結果は、ホバー効果の色です。
ただし、問題があります。移行中のある時点で、画像が少し透けて見えます。これは、「transition-timing-function」プロパティが線形に設定されていても、不透明度の移行が線形ではないことを示しています。
なんらかの 2 次イージングが関係している場合、なぜこれが起こっているのか理解できますが、あってはならないのでしょうか?
(私が純粋な CSS でこれに取り組んでいる理由は、まだ JQuery に完全に取り組んでいないからです)
この機能をより適切に実装する方法についてのアイデアはありますか?
私の CSS は以下のとおりです。または、この JSFiddle にアクセスしてください。
#container { width: 210px; height: 150px; display:block; border: 4px solid #ccc; position:relative; overflow:hidden; margin: 10px 0 0 10px;}
.image { width: 210px; height: 150px; display:block; position:absolute; left: 0px; top:0px; }
#dbw {
transition: all 0.3s linear;
-webkit-transition: all 0.3s linear;
moz-transition: all 0.3s linear;
-o-transition: all 0.3s linear;
background: url("http://oi42.tinypic.com/x0y2ky.jpg");
zoom: 1;
filter: alpha(opacity=100);
opacity: 1;
}
#dco {
transition: all 0.3s linear;
-webkit-transition: all 0.3s linear;
moz-transition: all 0.3s linear;
-o-transition: all 0.3s linear;
background: url("http://oi40.tinypic.com/28gwcrb.jpg");
zoom: 1;
filter: alpha(opacity=0);
opacity: 0;
}
#container:hover #dbw {
filter: alpha(opacity=0);
opacity: 0;
transform: scale(1.1);
-ms-transform: scale(1.1);
-webkit-transform: scale(1.1);
}
#container:hover #dco {
filter: alpha(opacity=100);
opacity: 1;
transform: scale(1.1);
-ms-transform: scale(1.1);
-webkit-transform: scale(1.1);
}