本によると、以下の例はメニューをフェードインおよびフェードアウトするはずですが、代わりにメニューがすぐに消えます。どういうわけか早すぎるのが問題だと思いますが、アニメーション display: none
で言っているのでわかりません。display: block
灰色の div が消えるのではなく、スムーズにフェードアウトするにはどうすればよいですか? アニメーションに CSS のみを使用するソリューションが推奨されます。
CSS
a {
color: white;
text-align: center;
}
.bar {
height: 20px;
background: red;
}
.div {
background: silver;
padding: 10px;
}
@-webkit-keyframes fade {
0% {
opacity: 0;
display: block;
}
100% {
opacity: 1;
display: block;
}
}
@keyframes fade {
0% {
opacity: 0;
display: block;
}
100% {
opacity: 1;
display: block;
}
}
.hidden {
display: none;
-webkit-animation: fade 2s reverse;
animation: fade 2s reverse;
}
.shown {
display: block;
-webkit-animation: fade 2s;
animation: fade 2s;
}
HTML
<div class="bar">
<a href="#" class="click">Click Me</a>
<div class="div shown">
<p>Hello</p>
</div>
</div>
jQuery
$(function() {
$div = $(".div");
var menu = function () {
if ( $div.hasClass("shown")) {
$div.removeClass("shown");
$div.addClass("hidden");
} else {
$div.removeClass("hidden");
$div.addClass("shown");
}
}
menu();
$(".click").bind("click", menu);
});