2011-08-18 57 views
16

Một số người có thể giải thích cho tôi sự khác biệt trong việc chuyển đổi thuộc tính left hoặc right vị trí hoặc -transform: translateX(n), vì cả hai dường như đều đạt được điều tương tự nhưng có thể được áp dụng độc lập. Tôi hiểu về khả năng tăng tốc phần cứng nhưng điều đó phụ thuộc vào việc thực hiện.Chuyển đổi CSS so với vị trí

// psuedo code; 

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

// javascript 

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

Ưu điểm của cái này với cái kia là gì? Cảm ơn,

p

Trả lời

5

topleft thuộc tính CSS chỉ làm việc trên các yếu tố vị trí relative, absolute hay fixed. Ngoài ra, topleft thuộc tính dựa vào vị trí của cha mẹ (tương đối, tuyệt đối hoặc tĩnh). Bản dịch không bị ảnh hưởng bởi cài đặt đó.


biến đổi dịch là "giống hệt nhau" để áp dụng topleft khi phần tử có position: relative. Trong bất kỳ trường hợp nào khác, chúng không phải là các hoạt động tương tự.

+0

như thế nào này có gì khác biệt so với sử dụng một lề – GBa

+0

Cũng đáng chú ý là việc thực hiện khi chuyển một dịch giá trị còn lâu mới mượt mà hơn so với sử dụng một giá trị vị trí hoặc lợi nhuận. – Dave

+0

Hiệu suất phụ thuộc vào việc triển khai trình duyệt. Tôi quan tâm nhiều hơn đến những lý do triết học cho những gì được đưa vào spec. – paulb

11

Vị trí phụ thuộc vào những gì position được đặt thành, transform hoạt động từ chính phần tử đó. Vì vậy, bạn có thể xem transform là trùng với position:relative;.

Tuy nhiên, bạn vẫn có thể sử dụng transform trên một phần tử được định vị hoàn toàn (để định vị nó tương đối mà không cần phần tử bổ sung hoặc sử dụng lề), cũng như transform là CSS3 vì vậy nếu bạn có thể sử dụng position.

+0

Tôi không thực sự chắc chắn tôi hiểu những gì bạn nói. Hãy để tôi làm rõ vị trí của tôi. Nó không thực sự quan trọng những gì vị trí được thiết lập để, ví dụ trên cung cấp 2 cách khác nhau để làm điều tương tự. Điều này chắc chắn là một cái gì đó CSS ​​spec nên tránh. – paulb

Các vấn đề liên quan