2013-01-02 30 views
5

Vì vậy, tôi vừa phát hiện ra các đơn vị xem, và tôi thực sự muốn sử dụng chúng.Các đơn vị Viewport, giữ tỷ lệ co?

Thách thức đầu tiên: Phần tử của tôi có "kích thước cơ bản" là 760x670 pixel. Tôi muốn sử dụng đơn vị khung nhìn để mở rộng quy mô để độ cao là 100vh hoặc chiều rộng là 100vw, tùy theo mức nào nhỏ hơn.

Không may, mặc dù tôi có thể sử dụng 100vmin để nhận được nhỏ hơn của hai, tôi chỉ có thể áp dụng nó cho chiều rộng hoặc chiều cao, không phải cả hai.

Hiện nay tôi đang sử dụng:

#root { 
    width: 760px; 
    height: 670px; 
    width: 100vw; 
    height: calc(670vw/760); 
} 

này quy mô chiều rộng để phù hợp với màn hình, dẫn đến di chuyển dọc. Đây không phải là quá xấu, nhưng tôi thích nó nếu tôi thực sự có thể có nó phù hợp với khung nhìn.

+0

Tôi đang thử nghiệm trong Chrome. Có vẻ như các đơn vị 'vw' không thể được sử dụng bên trong' calc'. Tôi đã thử các công cụ như 'height: -webkit-calc (100vw/3)'. Chỉ có các trình duyệt khác hỗ trợ cả các đơn vị 'calc' và viewport là IE10 và Safari 6, cả hai đều không thể được cài đặt trên nền tảng của tôi (Windows 7). –

+1

Btw, điều này có thể thực hiện được với truy vấn phương tiện, vì bạn có thể mã chi nhánh dựa trên tỷ lệ khung hình, ví dụ: '@media all và (min-aspect-ratio: 760/670) {...}'. –

+0

Đó là lỗi [Lỗi WebKit] (https://bugs.webkit.org/show_bug.cgi?id=94158). Vì vậy, hãy quên Chrome/Safari. Firefox/Opera thậm chí không triển khai các đơn vị xem. Dường như IE10 là trình duyệt duy nhất hiểu mã của bạn. ':)' –

Trả lời

8

Tôi đã thực hiện nó hoạt động trong IE10:

#elem { 
    width: 100vw; 
    height: calc((9/16)*100vw); 
} 

@media (min-aspect-ratio:16/9) { 
    #elem { 
     height: 100vh; 
     width: calc((16/9)*100vh); 
    } 
} 

Live Demo:http://jsfiddle.net/C2ZGR/show/ (mở trong IE10 (phiên bản xem trước có sẵn cho Windows 7), sau đó cửa sổ thay đổi kích thước, vì vậy mà một trong hai chiều rộng , hoặc chiều cao rất nhỏ)

Tôi đã sử dụng phần tử có tỷ lệ khung hình 16: 9, nhưng mã có thể hoạt động với bất kỳ tỷ lệ khung hình nào - chỉ cần thay thế 16/99/16 với tỷ lệ cỡ ảnh bạn muốn.

Btw, IE10 là trình duyệt duy nhất mà bản demo này sẽ hoạt động. Firefox/Opera không triển khai các đơn vị viewport, và các trình duyệt WebKit hiện đang có một lỗi mà các đơn vị viewport không thể được sử dụng bên trong calc().

+0

Rất đẹp. Cảm ơn bạn. –

+0

Điều này dường như hoạt động trong Chrome. – BlueMonkMN

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