2011-08-18 12 views
16

Czy niektórzy mogą wyjaśnić mi różnicę w przenoszeniu położenia obiektów left lub lub -transform: translateX(n), ponieważ oba wydają się osiągnąć to samo, ale mogą być stosowane niezależnie. Rozumiem możliwość przyspieszenia sprzętowego, ale to zależy od implementacji.Przekształcenie CSS vs pozycja

// psuedo code; 

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

// javascript 

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

Jaka jest przewaga jednej nad drugą? Dzięki

p

Odpowiedz

5

top i left właściwości CSS działa tylko na elementach umieszczonych relative, absolute lub fixed. Również właściwości top i left opierają się na pozycji rodzica (względnej, bezwzględnej lub statycznej). Tłumaczenia nie mają wpływu na te ustawienia.


przemiany Translation są "identyczne" zastosowaniu top i left gdy element ma position: relative. W każdym innym przypadku nie są to te same operacje.

+0

Jak to inaczej niż przy użyciu margines – GBa

+0

Warto również zauważyć, że wydajność podczas przechodzenia przetłumaczyć wartość jest znacznie łagodniejsze niż przy użyciu wartości pozycyjną lub marginesu. – Dave

+0

Wydajność zależy od implementacji przeglądarki. Bardziej interesują mnie filozoficzne przyczyny tego, co jest zawarte w specyfikacji. – paulb

11

Pozycja jest zależna od ustawienia position, transform działa z samego elementu. Tak więc można może zobaczyć transform jako identyczne z position:relative;.

Jednak nadal można używać transform na absolutnie elementu pozycjonowanego (aby ustawić go stosunkowo bez konieczności dodatkowego elementu lub uciekania się do marginesów), a także transform będąc CSS3 więc jeśli można użyć position zamiast powinieneś.

+0

Nie jestem pewien, czy rozumiem, co mówisz. Pozwól mi wyjaśnić moje stanowisko. Nie ma znaczenia, która pozycja jest ustawiona, powyższy przykład zapewnia 2 różne sposoby robienia tego samego. Jest to z pewnością coś, czego powinna unikać specyfikacja CSS. – paulb

Powiązane problemy