Я пытаюсь воспроизвести следующую анимацию в обратном порядке. Первоначальное раскрытие подменю прекрасно, однако я пытаюсь отменить его, когда он больше не вибрирует (так что продукт 4 исчезает сначала, затем 3, затем 2 и т. Д.)jQuery обратный порядок .each()
HTML
<div class="postit-surround">
<a href="#">
<div class="postit">
<div class="pin">
<img src="assets/pin.png">
</div>
<div class="postit-title">
Products
</div>
<div class="corner-peel">
<img src="assets/corner-flick-cyan.png">
</div>
</div>
</a>
<div class="navigation-dropdown">
<ul>
<li>
Products Page 1
</li>
<li>
Products Page 2
</li>
<li>
Products Page 3
</li>
<li>
Products Page 4
</li>
</ul>
</div>
</div>
CSS
div.navigation-dropdown {
position: absolute;
top: 80px;
left: -5px;
}
div.navigation-dropdown > ul {
padding: 0px;
margin: 0px;
position: absolute;
top: 30px;
width: 140px;
}
div.navigation-dropdown > ul > li {
padding: 10px 10px 20px 10px;
list-style-type: none;
-webkit-transform: rotate(15deg);
transform-origin: 0% 0%;
-webkit-transform-origin: 0% 0%;
-ms-transform-origin: 0% 0%;
background-color: #aaaaaa;
margin-top: -10px;
margin-bottom: 5px;
border: 1px solid #eeeeee;
-webkit-transition: -webkit-transform 0.3s ease-out;
-moz-transition: -moz-transform 0.3s ease-out;
-o-transition: -o-transform 0.3s ease-out;
-ms-transition: -ms-transform 0.3s ease-out;
transition: transform 0.3s ease-out;
cursor: pointer;
}
div.navigation-dropdown> ul> li:hover {
-webkit-transform: rotate(0deg);
transform-origin: 0% 0%;
-webkit-transform-origin: 0% 0%;
-ms-transform-origin: 0% 0%;
-webkit-transition: -webkit-transform 0.3s ease-out;
-moz-transition: -moz-transform 0.3s ease-out;
-o-transition: -o-transform 0.3s ease-out;
-ms-transition: -ms-transform 0.3s ease-out;
transition: transform 0.3s ease-out;
}
JS
$("div.navigation-dropdown").children().children().hide();
$("div.postit-surround").hover(function(){
var offset = 200;
function dropdown(x){
setTimeout(function() {
$(x).fadeIn(500);
},$(x).index() * offset)
};
$(this).find("div.navigation-dropdown > ul > li").each(function(){
dropdown(this);
});
}, function(){
var offset = 200;
function dropup(y){
setTimeout(function() {
$(y).fadeOut(500);
},$(y).index() * offset)
};
$($("div.navigation-dropdown > ul > li").get().reverse()).each(function() {
dropup(this);
});
})
Смотрите пример: http://jsfiddle.net/vVZy3/
Я видел несколько примеров, которые люди указали в других вопросах, но никто не работал для меня.
Отлично! Работает как шарм. У меня было ощущение, что это связано с таймаутом после того, как я потратил триггер. Благодаря! – Mallander
Ответ прекрасен, но просто попробуйте навести на него курсор ... 'Продукты Страница 4' не скрывается ... Не уверен в проблеме ... – Bhavik
Да, я сейчас пытаюсь решить несколько проблем с помощью быстрое перемещение наклонного движения. Я думаю, что что-то вроде $ .finish() может работать, возможно, $ .stop(), добавляя две функции «выпадающего» и «выпадающего» в очередь, чтобы проверить, работает ли очередь в настоящий момент до запуска следующая функция – Mallander