我有一个默认隐藏的搜索栏,当你点击按钮时,它会隐藏或删除它取决于状态。我认为它工作得很好,因为它完美地出现和消失,直到我意识到我不能点击一个特定的元素,因为搜索div是hidden
,但实际上显示是block
。我需要它去显示none
<div id="searchsection" class="btnlist btnlist-top blank" style="display:none">
</div>
<button id="pl-manage-search" style="background-color:#2f383f;font-size: 38px;" class="btn btn-default" type="button" title="Toggle Search" onclick="openSearch()"><i class="fa fa-search"></i></button>
Css: @keyframes fadinsearch {
0% {
display: none;
opacity: 0;
}
1% {
display: block;
}
100% {
display: block;
opacity: 1;
}
}
.fadinsearch {
animation: fadinsearch 500ms linear;
animation-fill-mode: forwards;
}
@keyframes fadoutsearch {
0% {
display: block;
opacity: 1;
}
99% {
display: block;
}
100% {
display: none;
opacity: 0;
}
}
.fadoutsearch {
animation: fadoutsearch 500ms linear;
animation-fill-mode: forwards;
}
JS:
var opens = false;
function openSearch()
{
if (opens == false)
{
$("div[id='searchsection']").each( function()
{
//$(this).toggleClass('blank fadinsearch');
$(this).removeClass( "blank" ).addClass( "fadinsearch" );
$(this).removeClass( "fadoutsearch" ).addClass( "fadinsearch" );
});
document.getElementById("searchsection").style.display = "block";
document.getElementById("playlist-entries").style.paddingTop = "79px";
opens = true;
}
else
{
$("div[id='searchsection']").each( function()
{
$(this).removeClass( "fadinsearch" ).addClass( "fadoutsearch" );
});
document.getElementById("playlist-entries").style.paddingTop = "1px";
//document.getElementById("searchsection").style.display = "none";
opens = false;
}
}
你不应该尝试在非数值之间进行动画。
相反,你可以使用opacity
和z-index
或left: -100%;
或类似的东西,因为你不能用关键帧将display
更改为none
。
你可以在这里阅读更多内容:CSS中的过渡和动画- book