2015-07-22 21 views
15

Krom 44 (44.0.2403.89 m) piyasaya sürüldü ve translate3d kullanırken sorun yaşıyorum.Chrome v.44'te translate3d ile ilgili hata nedir?


(hem Mac ve Windows sürümleri) Bu anda fullPage.js gibi eklentileri ve dolayısıyla thousands of pages etkiliyor. ardışık kısa bir süre sonra aynı elemana iki farklı tercüme değerleri uygularken ( Opened issue at fullpage.js github)


O geliyor bana ben yeni bir değer uyguladığınızda, bir önceki neden 0 olarak konumunu yeniden başlatır kaçırmak için geçiş.

Ben tamamen izole etmek ve o kadar temiz ben isterdi olarak çoğaltmak mümkün değildi, ama bu kadarıyla yapabileceği gibidir:

http://jsfiddle.net/9ksx000q/3/

sadece aşağı ilerleyin bunu yeniden oluşturmak için . Ardışık olarak yaparsanız, her bir kaydırmada önceki bölüme nasıl geçtiğini göreceksiniz. E.g: İlk kırmızı bölümü iki kez göreceksiniz.

Aynı sınamayı başka bir tarayıcıyla açarsanız, sorunu görmezsiniz. uygulanan

geçişler (onlar görünüm boyutuna bağlıdır) benim durumumda aşağıdaki olanları şunlardır:

translate3d(0px, -641px, 0px); 
translate3d(0px, -1282px, 0px); 
translate3d(0px, -1923px, 0px); 

Ama 1. ve 2., ve 3. ve geri dönmek gibi görünüyor 4 arasında translate3d(0,0,0);'a kadar ilk bölümün başlangıç ​​noktası olarak tekrar tekrar gösterilmesine neden olur.

+1

@misterManSam soru güncellendi. – Alvaro

+0

Uygulanan bu geçişleri aldım: 'translate3d (0px, -255px, 0px); translate3d (0px, -510px, 0px); translate3d (0px, -765px, 0px); translate3d (0px, -1020px, 0px) ' – Hackerman

+0

@Hackerman evet, bu görünümün boyutuna bağlıdır. Ama sorun hala orada. İlgili olan, 0,0,0 pozisyonu olan ilk bölüme geri dönmesidir. – Alvaro

cevap

1

kişiyi ne zaman mesele animasyon ve pozisyon hesaplaması garip olsun şeyleri neden olan, aynı anda gerçekleşiyor olmasıdır Sanırım bir animation frame

http://jsfiddle.net/9ksx000q/4/

bunu ararsa çalışır

requestAnimationFrame(function() { 
    var dtop = element.position().top; 

    element.addClass('active').siblings().removeClass('active'); 

    canScroll = false; 

    var translate3d = 'translate3d(0px, -' + Math.ceil(dtop) + 'px, 0px)'; 
    $('#container').css(getTransforms(translate3d)); 

    //after animations finishes we allow to scroll again 
    setTimeout(function() { 
     canScroll = true; 
    }, 1000);  
    //1000s is the time set to the in the CSS for the container 
    //transition: all 1000ms ease-in-out; 
}); 
+0

Çok ilginç! [Tüm tarayıcılarda desteklenmediği için IE <10] yerine (https://gist.github.com/alvarotrigo/530d5ff7a34e8d3463eb) bir yedek oluşturmak zorunda kaldım (http: // caniuse.com/# feat = requestanimationframe) ama iyi çalışıyor gibi görünüyor! Bunun için teşekkürler! (Chrome hatalarının hala çözülmesine ihtiyaç duymama rağmen) – Alvaro

+0

Bu çözümü uygularken karşılaştığım bir problem, 'requestAnimationFrame''in senkronizasyonu bozması ve bazı sorunlara yol açabilmesidir. – Alvaro

+0

Chrome'daki hatanın çözüldüğünü şimdi requestAnimationFrame uygulamasının uygulanması için herhangi bir neden var mı? Herhangi bir bilgi var mı? – Alvaro