我正在嘗試修復觸發懸停的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) –