2011-10-18 37 views
18

Tôi muốn sử dụng biến đổi thuộc tính CSS3: scale.Chuyển đổi CSS3: tỷ lệ trong IE

div 
{ 
    transform: scale(0.5,0.5); 
} 

Có cách nào để bắt chước điều này trong Internet Explorer 8 trở xuống không? Có thể là điều gì đó với filter hoặc giải pháp Javascript?

Tôi đã tìm kiếm trên web mà không có bất kỳ kết quả nào.

Thanks a lot, Vincent

+5

khi đặt câu hỏi như thế này, xin ghi rõ phiên bản (s) của IE bạn đang hỏi về, bởi vì nó làm cho một sự khác biệt rất lớn đối với câu trả lời. – Spudley

Trả lời

32

IE9 hỗ trợ chuyển đổi:

-ms-transform: scale(0.5,0.5); 

Đối với các phiên bản khác của IE, có một cú pháp phức tạp. Một cái gì đó như thế này:

filter: progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', 
    M11=1.5320888862379554, M12=-1.2855752193730787, 
    M21=1.2855752193730796, M22=1.5320888862379558); 

Look here để biết thêm thông tin.

+7

Bạn cũng có thể thử [CSS3 Transform to Matrix converter] (http://www.useragentman.com/IETransformsTranslator/) cho một lần chuyển đổi thành định dạng của IE. – thirdender

+1

-ms-transform: tỷ lệ (0,5); là đủ cho IE9 cho một zoom liên tục. – Kozuch

13

Không, IE8 trở về trước không hỗ trợ kiểu transform tiêu chuẩn. IE9 không hỗ trợ nó mặc dù.

Có các giải pháp bạn có thể thử sử dụng kiểu filter, nhưng chúng sẽ lộn xộn.

Nhưng đối với trường hợp đơn giản mà bạn mô tả trong câu hỏi (về cơ bản là giảm tỷ lệ đơn giản), bạn có thể sử dụng thuộc tính độc quyền của IE zoom.

Vì nó không chuẩn, việc sử dụng phổ biến nhất của zoom là với zoom:1, được sử dụng để sửa chữa một số lỗi bố trí của IE (cụ thể trong IE6 và IE7). Nhưng nó cũng làm phóng to thực tế là tốt, và bạn có thể sử dụng zoom:0.5 để đạt được hiệu quả mà bạn đang tìm kiếm.

Điều tốt về việc sử dụng zoom là nó hoạt động trong IE giống như bất kỳ thuộc tính CSS thông thường nào khác (thay thế filter có một số quirks hiển thị nghiêm trọng mà bạn cần biết).

Chỉ từ phía dưới của việc sử dụng zoom là bạn cần tắt nó trong IE9 hoặc mới hơn, nếu không nó sẽ xen kẽ với kiểu transform của bạn và có một số hiệu ứng không mong muốn. Tôi không phải là người thường hỗ trợ sử dụng hacks CSS, nhưng bạn có thể sử dụng hack /9 (documented here) để làm cho nó chỉ ảnh hưởng đến IE8 và trước đó, nghĩa là bạn có thể chỉ định cả transformzoom trong cùng một biểu định kiểu, như vậy :

div { 
    transform: scale(0.5,0.5); 
    zoom: 0.5\9; 
} 

Nếu không, bạn cần sử dụng các nhận xét có điều kiện để xác định có sử dụng hay không. Rõ ràng nếu bạn muốn làm bất cứ điều gì phức tạp hơn một thang tỷ lệ đơn giản, thì zoom sẽ không phù hợp, nhưng đối với một trường hợp đơn giản như trường hợp trong câu hỏi của bạn, nó sẽ là hoàn hảo.

+0

Cảm ơn câu trả lời thú vị của bạn. Thu phóng không may dường như chỉ mở rộng văn bản. Và không phải là kích thước của div của tôi. – Vinzcent

+0

vâng, tôi đoán nó phụ thuộc vào những gì bạn thực sự cần đạt được là liệu 'zoom' có phù hợp hay không. – Spudley

+0

Cảm ơn mẹo hack/9. Tôi đã có một số hành vi kỳ lạ trong IE9 và 10 bởi vì tôi đã phóng to trong cùng một phong cách để trang trải IE8. – dex3703

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