2011-08-18 11 views
16

¿Alguno puede explicarme la diferencia en la transición de las propiedades posicionales left o right o -transform: translateX(n), ya que ambas parecen lograr lo mismo pero se pueden aplicar independientemente. Entiendo acerca de la posibilidad de acelerar el hardware, pero eso depende de la implementación.Transformación CSS frente a la posición

// psuedo code; 

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

// javascript 

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

¿Cuál es la ventaja de una sobre la otra? Gracias,

p

Respuesta

5

top y left propiedades CSS trabajar solamente en elementos posicionados relative, absolute o fixed. Además, las propiedades top y left se basan en la posición del padre (relativa, absoluta o estática). Las traducciones no se ven afectadas por esa configuración.


transformaciones de traducción son "idéntica" a la aplicación de top y left cuando el elemento tiene position: relative. En cualquier otro caso, no son las mismas operaciones.

+0

Cómo esto es diferente que el uso de un margen – GBa

+0

También digno de mención que el rendimiento en la transición de un traducen valor es mucho más suave que el uso de un valor posicional o margen. – Dave

+0

El rendimiento depende de la implementación del navegador. Me interesan más las razones filosóficas de lo que se incluye en la especificación. – paulb

11

La posición depende de en qué se configura position, transform funciona desde el elemento en sí. De modo que podría ver transform como idéntico a position:relative;.

Sin embargo, todavía se puede utilizar transform sobre un elemento con posición absoluta (en la posición que sea relativamente sin necesidad de un elemento adicional o recurrir a los márgenes), así como transform ser CSS3 lo que si puede utilizar position lugar que debería.

+0

No estoy muy seguro de entender lo que dices. Déjame aclarar mi posición. En realidad, no importa en qué posición esté establecida, el ejemplo anterior proporciona 2 formas diferentes de hacer lo mismo. Esto es seguramente algo que la especificación CSS debería evitar. – paulb

Cuestiones relacionadas