2012-08-17 50 views
2

我目前正在開發一個小的「可拖動移動小部件」,基本上它只實現了jQuery UI可拖動小部件(我爲我的項目所需的部分)的一部分界面。在Firefox中相當於CSSMatrix?

我知道我可以模擬鼠標事件,並使jQuery UI Draggable在移動/平板電腦平臺上正常工作,但該方法的主要問題是它感覺不夠平滑,並且自CSS3轉換爲硬件加速,使用translate3d而不是改變頂部,左側性質作出了巨大的差異,你可以在這裏看到:

http://dl.dropbox.com/u/16252882/royws/td/demo/touchdraggable.html

我正打算使其成爲IE10的工作和最新的Firefox也一樣,所以在代碼我正在使用WebkitCSSMatrix來解析矩陣。我GOOGLE了它,發現IE10我可以使用MSCSSMatrix解析矩陣,但我無法在Firefox中找到類似的類。

我只使用現在的矩陣的M.E和M.f屬性,你可以在這裏看到,

https://github.com/royriojas/touch-draggable/blob/master/src/touch-draggable.js

,所以我知道我可以手動解析它。如果沒有其他選擇,我將不得不這樣做,我只是想知道如果有人知道如何做到這一點,在Firefox中的簡單方法:)

+0

看來這不是一個標準的東西,所以它只適用於那些瀏覽器和其他地方,顯然,你將不得不想出一些額外的代碼來使它在其他地方工作。 – Rob 2012-08-17 02:31:49

+0

謝謝你,好像我需要解析矩陣:) – 2012-08-17 05:13:08

回答

0

所以我找不到相應的類,但這是我用來填補空白的地方,順便提一下,我覺得奇怪的答案是我自己的問題!

var isMoz = $.browser.mozilla; //TODO: check for a property detection instead of a browser sniffing 

var reMatrix = /matrix\(\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*\,\s*(-?\d+(?:\.\d+)?)\s*,\s*(-?\d+(?:\.\d+)?)\s*\)/; 

$.getMatrix = function (transformString) { 

    if (isMoz) { 
    //TODO: I couldn't find the equivalent for WebKitCSSMatrix class in firefox 

    //Other values are being ignored for now cause I don't really need them now 
    var dummyMatrix = { 
     e : 0, 
     f : 0 
    }; 

    var match = transformString.match(reMatrix); 
    if (match) { 
     dummyMatrix.e = match[1]; 
     dummyMatrix.f = match[2]; 
    } 
    return dummyMatrix; 
    } 
    if (pEnabled) { 
    return new MSCSSMatrix(transformString); 
    } 
    return new WebKitCSSMatrix(transformString); 
}; 

我現在只關心M.e和M.f屬性。

此外,正則表達式是從TouchScroll源代碼中「借來的」!

+0

你正在尋找的屬性檢測只是'if(!window.WebKitCSSMatrix &&!window.MSCSSMatrix){...}':) – timdream 2013-02-21 09:33:56

2

我知道這是晚了幾個月,但如果您仍然感興趣,我發現(並幫助修復)我工作的項目CSSMatrix shim。鏈接的版本並不是即時瀏覽器就緒(稍微落後於my fork),所以如果您只是想複製代碼並隨時查看,請隨時查看browserified version(與WebKitCSSMatrix對象更接近匹配)。

1

這來得比較晚,但也許這會幫助未來的讀者。我剛剛建立了a class that does exactly this。它提供了一個名爲'CSSMatrix'的對象,它可以完全匹配WebKitCSSMatrix的每個方法。以下是live demo並排比較。希望這可以幫助!