2011-11-02 9 views
10

एक div इस इसे करने के लिए आवेदन किया है कहते हैं:एक div के 3 डी मान अनुवाद प्राप्त करें?

-webkit-transform: translate3d(0px, -200px, 0px) 

मैं jQuery के साथ उन मूल्यों को कैसे पुनः प्राप्त कर सकता है?

+1

क्या आपने ['jQuery.css'] (http://api.jquery.com/css) का उपयोग करने का प्रयास किया है? – namuol

उत्तर

10

मूल्य को matrix या matrix3d के रूप में संग्रहीत किया जाता है, इस पर निर्भर करता है कि z मान सेट किया गया था या नहीं। 2 डी मैट्रिक्स, एक्स और वाई के लिए कोई अन्य परिवर्तन नहीं मानते हैं, पिछले दो मान हैं। 3 डी मैट्रिक्स के लिए, एक्स, वाई, जेड, 1 अंतिम चार अंक हैं। आप इस के लिए स्वीकार किए जाते हैं जवाब के मैच() पद्धति को बदलते हैं

function getTransform(el) { 
    var results = $(el).css('-webkit-transform').match(/matrix(?:(3d)\(\d+(?:, \d+)*(?:, (\d+))(?:, (\d+))(?:, (\d+)), \d+\)|\(\d+(?:, \d+)*(?:, (\d+))(?:, (\d+))\))/) 

    if(!results) return [0, 0, 0]; 
    if(results[1] == '3d') return results.slice(2,5); 

    results.push(0); 
    return results.slice(5, 8); 
} 
+3

तुम बस 'सीएसएस प्राप्त कर सकते हैं ('को बदलने')' अब के रूप में jQuery विक्रेता उपसर्गों को सामान्य है। – Soviut

+1

जैसा कि ट्रेवर द्वारा दिए गए उत्तर में बताया गया है, यह नकारात्मक मूल्यों के लिए काम नहीं करता है !! – Larzan

0

संपादित करें: यह गलत है, इस पर ध्यान न दें।

मुझे लगता है कि अगर आप कुछ पसंद है ...

var styles = $('.myclass').css('-webkit-transform'); 

आप शायद translate3d(0px, -200px, 0px) वापस मिल जाएगा।

शायद तुम तो उस स्ट्रिंग पार्स सकता है? हालांकि एक हैक की तरह लगता है।

+1

नहीं, तुम एक मैट्रिक्स वापस इस तरह मिलेगा: 'मैट्रिक्स (-1, -0,00000000000000012246467991473532, 0,00000000000000012246467991473532, -1, 0, 0)' – ProblemsOfSumit

+1

आह सही! uch! यही कारण है कि मैंने कहा * लगता है *, * शायद * और * शायद * :) – simonlchilds

9

यह ऋणात्मक संख्याओं के लिए समर्थन जोड़ता है:

आप मूल्यों को प्राप्त करने के लिए रेगुलर एक्सप्रेशन का उपयोग कर सकता है आप अगर

$(el).css('-webkit-transform').match(/matrix(?:(3d)\(-{0,1}\d+(?:, -{0,1}\d+)*(?:, (-{0,1}\d+))(?:, (-{0,1}\d+))(?:, (-{0,1}\d+)), -{0,1}\d+\)|\(-{0,1}\d+(?:, -{0,1}\d+)*(?:, (-{0,1}\d+))(?:, (-{0,1}\d+))\))/) 
+0

यह मेरे मामले में शून्य लौट रहा है –

1

निम्नलिखित अभिव्यक्ति को अद्यतन करें, जब आपके ट्रांसफॉर्म ने फ्लोट किया है तो उन अजीब मामलों के लिए समर्थन जोड़ता है:

/matrix(?:(3d)\(-{0,1}\d+\.?\d*(?:, -{0,1}\d+\.?\d*)*(?:, (-{0,1}\d+\.?\d*))(?:, (-{0,1}\d+\.?\d*))(?:, (-{0,1}\d+\.?\d*)), -{0,1}\d+\.?\d*\)|\(-{0,1}\d+\.?\d*(?:, -{0,1}\d+\.?\d*)*(?:, (-{0,1}\d+\.?\d*))(?:, (-{0,1}\d+\.?\d*))\))/ 
संबंधित मुद्दे