OK - để bắt đầu, bạn nên sử dụng Ems cho nhiều số đo nhất có thể trong giao diện người dùng của mình. Ít nhất, kích thước tất cả các yếu tố văn bản của bạn với Ems (thay vì pixel hoặc%). Nếu có thể, việc thiết lập chiều rộng của khối bố cục trong Ems cũng sẽ giúp tỷ lệ ứng dụng tương ứng. Nếu bạn có thể đặt tất cả các thứ nguyên của mình trong Ems, toàn bộ ứng dụng của bạn sẽ có thể mở rộng bằng hình ảnh.
Chìa khóa để Ems là chúng có kích thước tương đối với kích thước phông chữ của phần tử gốc - có nghĩa là bạn có thể điều chỉnh kích thước của tất cả văn bản theo tỷ lệ, bằng cách điều chỉnh kích thước phông chữ của phần tử cơ thể (mọi thứ đều liên quan đến cơ thể).
Bước cuối cùng là sử dụng một đoạn javascript để phát hiện chiều rộng của chế độ xem và đặt kích thước phông chữ của phần thân theo đó. Tùy thuộc vào mức độ chi tiết bạn muốn kiểm soát tỷ lệ, bạn có thể sử dụng các lớp trên phần tử cơ thể để thiết lập một tập hợp các giá trị được xác định trước hoặc trực tiếp thao tác với kích thước phông chữ. Tôi có xu hướng sử dụng các kích thước được xác định trước nếu có thể để làm cho thử nghiệm dễ dàng hơn.
Tôi muốn sử dụng thư viện javascript để làm cho việc phát hiện chiều rộng của chế độ xem dễ dàng hơn - nó khác biệt rõ rệt trong các trình duyệt khác nhau. Với jQuery, các mã có thể trông giống như:
$(function(){
var viewPortWidth = $(window).width();
if (viewPortWidth > 1900) {$('body').addClass('extraWide')}
else if (viewPortWidth > 1400) {$('body').addClass('wide')}
else if (viewPortWidth > 1000) {$('body').addClass('standard')}
else if (viewPortWidth > 700) {$('body').addClass('narrow')}
else {$('body').addClass('extraNarrow')}
});
Và CSS:
<style type="text/css">
body {font-size:62.5%;} /* Set the size of 1em to 10px in all browsers */
body.extraWide {font-size:85%;}
body.wide {font-size:75%;}
body.narrow {font-size:50%;}
body.extraNarrow {font-size:40%;}
</style>
Những giá trị có thể được tinh chỉnh tuy nhiên bạn thích, tất nhiên, và bạn có thể thiết lập nhiều bộ phận như bạn muốn . Đây là một giải pháp nhanh chóng và bẩn thỉu, nhưng nên làm điều này.
Lưu ý - mã javascript được hiển thị sẽ chỉ đặt tỷ lệ khi trang được tải - nó sẽ không điều chỉnh khi bạn thay đổi kích thước cửa sổ của mình. Đó là một bổ sung có thể, nhưng có những cân nhắc lớn hơn trước khi đi xuống theo dõi đó. Cá nhân, tôi thậm chí còn nghĩ đến việc thiết lập giá trị quy mô trong một cookie, để giữ cho trải nghiệm của người dùng nhất quán trong suốt phiên của họ, thay vì rescaling trên mỗi lần tải trang.
Tôi hy vọng các downvotes chống lại câu trả lời này là do có được tốt hơn, các giải pháp hiện đại hơn cho vấn đề này bây giờ. Đó không phải để nói câu trả lời này là _wrong_, nhưng các truy vấn phương tiện truyền thông nên là điều đầu tiên để cố gắng đạt được hiệu ứng này. – Beejamin