如何获取 div 动画的当前状态?

How can I get the current state of my div animation?

我正在使用 Safari,因此为了更容易回答我的问题,我将在我的动画中使用 -webkit- 前缀。

我正在制作角落里的菜单。当用户悬停时,它会跨越整个网站,直到用户离开菜单,然后它会再次后退。

我遇到的唯一问题是,如果用户不等到菜单栏完全横跨网页,则该栏会闪烁以到达其在动画中的位置。我该怎么做才能解决此问题并使动画从 div 的当前宽度开始?这是我的 CSS:

#menubar {
    /* Menu bar styling */
}

#menubar:hover {
    -webkit-animation: openMenu 2s;
    width: 100%;
}

#menubar:not(:hover) {
    -webkit-animation: closeMenu 2s;
    width: 75px;
}

/* Animations */

@-webkit-keyframes openMenu {
    from {width:75px;}
    to {width:100%;}
}

@-webkit-keyframes closeMenu {
    from {width:100%;} /* How do I get the current width of the div here instead of using width:100%;? */
    to {width:75px;}
}

在此先感谢大家的帮助。

你需要关键帧吗?您可以使用转换获得相同的结果,例如 fiddle.

#menubar {
    /* Menu bar styling */
    width: 75px;

    transition: width 2s;
}

#menubar:hover {
    width: 100%;
}

基本上,您告诉菜单栏在悬停时应为 100%,空闲时应为 75px,宽度过渡应持续 2 秒,一切正常。