2011-08-18 136 views
16

有些人可以向我解釋在轉換位置leftright屬性或-transform: translateX(n)時的差異,因爲兩者似乎都達到了同樣的效果,可以單獨應用。我瞭解硬件加速的可能性,但這取決於實施。CSS轉換與位置

// psuedo code; 

#box { 
    -transition-property: all; 
    -transition-duration: 1s; 
} 

// javascript 

box.style.transform = "translateX(200px)"; 
vs 
box.style.left = "200px"; 

一個優於另一個的優勢是什麼? 謝謝,

p

回答

5
top

left CSS屬性上定位relativeabsolutefixed元件才起作用。此外,topleft屬性依賴父級的位置(相對它,絕對或靜態)。翻譯不受該設置的影響。


翻譯轉換是 「相同的」 施加topleft當元件具有position: relative。在任何其他情況下,它們不是相同的操作。

+0

這怎麼比使用保證金 – GBa

+0

另外值得注意的是,表現一個過渡轉換價值遠遠比使用位置或保證金價值時更順暢有什麼不同。 – Dave

+0

性能取決於瀏覽器的實現。我更關注規範中包含的內容的哲學原因。 – paulb

11

位置取決於position的設置,transform的作用來自元素本身。所以你可能看到transformposition:relative;相同。

但是,你仍然可以使用transform絕對定位的元素上(將它定位相對而無需額外的元素或訴諸利潤率),以及transform是CSS3,所以如果你可以用position相反,你應該。

+0

我不太確定我明白你的意思。讓我澄清我的立場。上面的例子提供了兩種不同的方式來做同樣的事情,這並不重要。這肯定是CSS規範應該避免的。 – paulb