如果动画不能按您的意愿工作,我建议您定义自己的动画。如果我没记错的话,预定义的动画是这样的
@keyframes slideInDown {
from {
transform: translate3d(0, -100%, 0);
visibility: visible;
}
to {
transform: translate3d(0, 0, 0);
}
}
所以你的动画必须是:
@keyframes slideInDown {
from {
transform: translate3d(0, -100%, 0);
visibility: visible;
}
to {
transform: translate3d(0, 0, 0);
visibility: visible;
}
}
然后添加animation-fill-mode: forwards;
到你的CSS中的li以保持可见性(所以你的CSS变得像这样):
@keyframes slideInDown {
from {
transform: translate3d(0, -100%, 0);
visibility: visible;
}
to {
transform: translate3d(0, 0, 0);
visibility: visible;
}
}
.menu-ani-item {
li {
animation: slideInDown 2s;
animation-fill-mode: forwards;
visibility: hidden;
...
工作示例在这里 https://codepen.io/Berci/pen/BaNBbyQ
您可能需要向关键帧添加供应商前缀,以确保跨浏览器一切正常。您可以阅读有关他们的更多信息here https://stackoverflow.com/questions/20617601/cross-browser-css3-keyframe-animation-firefox and here https://stackoverflow.com/questions/5411026/list-of-css-vendor-prefixes。但在 scss 中,您可以定义通用供应商前缀,例如here https://golightlyplus.com/vendor-prefixes-for-css3-animations-using-scss/