根据一本书,下面的例子应该是淡入和淡出菜单,但是菜单会立即消失。我认为问题是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);
});
答案 0 :(得分:2)
正如我在评论中所说,你可能还会使用jquery。
的jQuery
$(".click").on("click", function() {
$(".div").fadeToggle("slow");
});
HTML
<div class="bar">
<a href="#" class="click">Click Me</a>
<div class="div shown">
<p>Hello</p>
</div>
</div>
的CSS
a {
color: white;
text-align: center;
}
.bar {
height: 20px;
background: red;
}
.div {
background: silver;
padding: 10px;
display: none;
}
答案 1 :(得分:0)
由于你无法在显示元素上进行转换(将其视为布尔值或枚举,除了&#34; true&#34;和&#34; false&#34;之外什么也没有,因为没有真的.5),你必须使用其他一些方法来隐藏元素。
在此fiddle(http://jsfiddle.net/3n1gm4/Q5TBN/)中,我使用max-height
属性和overflow: hidden
以及transition
来设置延迟。
.hidden {
-webkit-animation: fade 2s reverse;
animation: fade 2s reverse;
-webkit-transition: 0s all 2s; /* delay this the duration of the animation */
transition-delay: 0s all 2s;
max-height: 0;
padding: 0;
overflow: hidden;
}
.shown {
-webkit-animation: fade 2s;
animation: fade 2s;
max-height: 5000px; /* some number way bigger than it will ever be to avoid clipping */
}