マウスオーバー時にCSSのみでフェードイン・フェードアウトを実装する場合、display: none;で非表示、マウスオーバー時にdisplay: block;で表示ではtransitionが動作しません。
a .caption_txt {
display: none;
transition: 0.5s;
}
a:hover .caption_txt {
display: block;
}
そこでopacity: 0;で非表示、マウスオーバー時にopacity: 1;で表示にします。これならtransitionが動作するためフェードイン・フェードアウトの動作になります。
a .caption_txt {
opacity: 0;
transition: 0.5s;
}
a:hover .caption_txt {
opacity: 1;
}
displayで表示・非表示を制御したい場合、CSSアニメーションでopacityを変化させればフェードインの動作が実現できます。ただしCSSアニメーションの特性上、マウスアウト時はフェードアウトになりません。
a .caption_txt {
display: none;
}
a:hover .caption_txt {
display: block;
animation: show 0.2s linear 0s;
}
@keyframes show{
from{
opacity: 0;
}
to{
opacity: 1;
}
}
display: none;の要素を確実にフェードイン・フェードアウトする場合はjQueryを利用します。
$(function() {
$('a').hover(
function() {
$(this).find('.caption_txt').fadeIn();
},
function() {
$(this).find('.caption_txt').fadeOut();
}
);
});





