Gezinme menüsü için düzenli gezinme efektleri oluşturmak istediğimi, ancak CSS yerine D3 geçişlerini etkiyi "yumuşatmak" için kullanıyorum. Bu .on
-yöntem için mouseover
ve mouseout
kullanarak çalışır. Bununla birlikte, problem, geçiş yapılmadan önce fare, gezinen bağlantıyı terk ederse geçişin sıkışmasıdır. Bu yan etki nasıl önlenir? ÖrneğinD3 mouseover geçişleri "takılı kalıyor"
, bu kod ile, alt sınır hala çok hızlı yaparsanız fare, başka bir yere taşındı sonra bile turuncu renkte görüntülenir:
d3.selectAll("a")
.on("mouseover", function() {
d3.select(this)
.style("border-bottom-color", "#fff")
.transition()
.duration(1000)
.style("border-bottom-color", "#B23600"); })
.on("mouseout", function() {
d3.select(this)
.style("border-bottom-color", "#fff"); });
Bilmiyorum mükemmel cevap, ama mouseout süresi önce çağrılır ve tamamlandığında şüpheli (1s) arasında mouseover tamamlandı. Belki mouseout için 1100 süresi? – cmonkey
Ayrıca, http://bost.ocks.org/mike/transition/ adresindeki okuma d3 sürümleri 2 ve 3 arasında farklılıklar olduğunu gösterir. Hangi sürümü kullanıyorsunuz? – cmonkey
Mükemmel bir cevabınız yok, ancak: Örneğin, örneğinizde olduğu gibi, HTML (SVG yerine) kullanıyorsanız, d3 geçişlerini tamamen atlayabilir ve bunun yerine css geçişlerini kullanabilirsiniz. Bu, sahip olduğunuz problemi kesinlikle çözecek ve daha performanslı olacak. Eski tarayıcıların kullanıcıları bir geçiş yapmazlar, ama oh ... – meetamit