CSS关键帧动画没有移除显示块

CSS Keyframe animation not removing display block

本文关键字:显示 关键帧 动画 CSS      更新时间:2023-09-26

我有一个默认隐藏的搜索栏,当你点击按钮时,它会隐藏或删除它取决于状态。我认为它工作得很好,因为它完美地出现和消失,直到我意识到我不能点击一个特定的元素,因为搜索div是hidden,但实际上显示是block。我需要它去显示none

Html:

<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;
    }
}

你不应该尝试在非数值之间进行动画。

相反,你可以使用opacityz-indexleft: -100%;或类似的东西,因为你不能用关键帧将display更改为none

你可以在这里阅读更多内容:CSS中的过渡和动画- book