我正在尝试修复触发悬停的CSS转换错误。问题是,如果你将鼠标悬停在按钮上并且速度太快,它们会完全错误。完成下一个事件之前的CSS动画
有没有办法等待css动画完成,然后触发'unhover'动画?
是的,我检查了很多'修复',但这有点复杂。
看看这里的网站:http://i280133.iris.fhict.nl/jongens/index.php。它涉及菜单悬停转换。
$(".navbar-nav>li>a").hover(function(){
$(this).addClass("animate");
$(this).one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend",
function(event) {
$(this).removeClass("animate");
});
})
.navbar-nav>li>a:after {
content: '';
display: block;
position: absolute;
z-index:-1;
right:0;
height: 2px;
width: 0;
background: #f8ff86;
transition: width .5s ease-in-out;
-webkit-transition-delay: 0.2s;
transition-delay: 0.2s;
-moz-transition: 0.2s;
}
.navbar-nav>li>a:hover:after {
width: 100%;
left:0;
right:auto;
background: #f8ff86;
}
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<nav class="navbar">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php"><img src="img/logo-yellow.png" /></a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li><a href="info.php">info</a></li>
<li><a href="werk.php">werk</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
</body>
你可以尝试简单地与动画的时间..这可能做的伎俩一个setTimeout的运行删除类。 –
@ fadeys.work我试过了,但是这并不能阻止'unhover'或下一个悬停动画的发生。 –
可能还有一些其他问题。首先你必须使用[debouncing](https://davidwalsh.name/javascript-debounce-function)来防止事件多次注册。还尝试使用JS库,通过动画[GSAP](https://greensock.com/gsap) –