2010-06-13 19 views
5

Bağlantı takip edilmeden önce çalmak istediğim kısa bir css tabanlı animasyona sahibim (sayfa yüklenen bir kart tıklatıldıktan sonra dışarı çıkar). Ancak, şu anda, sayfa çok hızlı bir şekilde yükler. Href'in takip edilmesini kısaca geciktirmek istiyorum.jquery, takip edilmek üzere bir bağlantıyı geciktiriyor

İşte bu var:

$(document).ready(function() { 
    $("#card").css("top","0px"); 
    $(".clickit").click(function() { 
     $("#card").css("top","-500"); 
    }); 
}); 

ilk satır sayfa yüklendiğinde kartı saldırıya geçer. Bundan sonra, CSS'yi değiştiren tıklatma çağrısıdır, fakat sanki animasyonun yerine sayfa hemen yüklendiği için orada bir tür gecikme olması gerektiğini söylediğim gibi.

#card { 
    width: 400px; 
    height: 500px; 
    position: relative; 
    top: -500px; 
    -webkit-transition:all .5s; 
} 

Bu 2008 yılından this question çok benzer bir sorun

(evet, bu webkit-yalnızca şu anda biliyorum) ama jQuery olmuştur biliyorum: değiştirildiğinde CSS şöyle o zamandan beri önemli ölçüde güncellendi, bu yüzden daha modern bir çözüm olup olmadığını görmek istedim.

Teşekkür ederiz!

+2

Neden kullanıcının deneyimini yavaşlatmak istiyorsunuz? Bir kullanıcı olarak bu can sıkıcı olurdu * çok * hızlı ... –

+0

anladım ve kaydetti. sadece espri beni ... –

+0

@Nick - Okumadığın * Işık Tugayı'nın Bedeli *? – user113716

cevap

11

.css() ve -webkit-transition:'u kullandığınızdan, yeni konumu ertelemek için setTimeout() kullanmanız gerekir.

canlı örneği deneyin: http://jsfiddle.net/2WJH9/

$(document).ready(function() { 
    $("#card").css("top","0px"); 
    $(".clickit").click(function() { 
     $("#card").css("top","-500px"); // Added px to make it work, 
             // or get rid of quotes -500 
     var href = $(this).attr('href'); 

      // Delay setting the location for one second 
     setTimeout(function() {window.location = href}, 1000); 
     return false; 
    }); 
});​ 

setTimeout() 1 saniye (1,000 milisaniye) için ayarlanmış olmaktan window.location geciktirir. Eğer -webkit-transition: den .5 saniye eşleştirmek istiyorsanız, o zaman 500.

+0

TEŞEKKÜR EDERİZ !!! Bu mükemmel çalıştı. –

2

Bu, 2008'den bu soruya çok benzer bir sorundur, ancak jQuery'nin o zamandan beri önemli ölçüde güncellendiğini biliyorum, bu yüzden daha modern bir çözüm olup olmadığını görmek istedim.

Nope, hala aynı cevap. Etkinliği iptal edin, daha sonra konumu kendiniz yükleyin.

+0

Teşekkürler. İşte buna adapte etme girişimim ... ama işe yaramıyor. Yine sadece hemen href yükleme: \t $ ("Clickit") tıklayın (function (ev) { \t \t ev..preventDefault(); \t \t var $ self = $ (this); \t \t $ self.css ("top", "- 800"); \t \t belge numarası = $ self.attr ('href'); \t}); –

5

yapabilirsiniz preventDefault() bağlantısı, daha sonra CSS geçiş işlemleri jQuery'nin hareketlendirmek işlevini kullanın üzerine Animasyon tamamlandıktan sonra bağlantıyı takip edin.

$('.clickit').click(function(e) { 
    e.preventDefault(); 
    href = $(this).attr('href'); 
    $('#card').animate({ top: '-500px' }, 500, function() { 
     window.location = href; 
    }); 
}); 
+0

Anlaşmalı. SetTimeout ayarlamanıza gerek yok, sadece animasyon tamamlandığında geri arama işlevini kullanın, Teşekkürler, Rastgele vatandaş! – Chud37

İlgili konular