Bỏ qua tới nội dung
Kiến thức Website· ·9 phút đọc

Viewport là gì và tại sao nó ảnh hưởng trực tiếp đến layout website của bạn

Nguyen Hien
Viewport là gì và tại sao nó ảnh hưởng trực tiếp đến layout website của bạn
Cỡ chữ

Viewport là gì?

Viewport (vùng hiển thị) là phần cửa sổ trình duyệt dùng để vẽ và hiển thị trang web. Đây không phải toàn bộ màn hình vật lý của thiết bị, mà là khu vực bên trong cửa sổ trình duyệt, không tính thanh địa chỉ, thanh tab hay taskbar (thanh tác vụ) của hệ điều hành.

Trên máy tính, viewport thay đổi khi bạn thu nhỏ cửa sổ Chrome. Trên điện thoại, viewport thường bằng với chiều rộng màn hình thiết bị, nhưng được tính theo CSS pixel (điểm ảnh CSS) chứ không phải pixel vật lý. Đó là lý do tại sao iPhone 15 có màn hình 1179px vật lý nhưng viewport lại là 390px CSS.

Viewport hoạt động liên quan chặt chẽ với breakpoint (điểm chuyển layout) và media query (quy tắc CSS áp theo điều kiện màn hình) để tạo ra thiết kế responsive hoàn chỉnh.

Sơ đồ CSS pixel so với pixel vật lý trên iPhone 15
iPhone 15 có 1179px vật lý nhưng chỉ 390px CSS pixel trong viewport. Tỉ lệ đó gọi là Device Pixel Ratio (DPR) = 3.

Visual viewport, layout viewport và ideal viewport là gì?

Có ba loại viewport thường gặp khi làm web, mỗi loại phục vụ một mục đích riêng:

LoạiLà gìVí dụ (iPhone 15)
Pixel vật lýPixel thực trên màn hình thiết bị1179 x 2556 px
Layout viewportVùng trình duyệt dùng để tính layout CSS390 x 844 CSS px
Visual viewportPhần layout viewport đang hiển thị (khi zoom hoặc bàn phím ảo bật)Thu nhỏ khi bàn phím ảo xuất hiện

Trong thực tế, khi bạn viết @media (max-width: 768px), bạn đang kiểm tra layout viewport. Khi dùng đơn vị vw (viewport width) trong CSS, bạn cũng tham chiếu layout viewport. Visual viewport ít khi cần xử lý trực tiếp, trừ khi bạn đang xây dựng ứng dụng web phức tạp có bàn phím ảo.

Thẻ meta viewport là gì và vì sao không được bỏ?

Đây là dòng HTML thường nằm trong <head> của mọi trang web responsive:

<meta name="viewport" content="width=device-width, initial-scale=1">

Không có dòng này, điện thoại sẽ render trang web theo chiều rộng mặc định khoảng 980px rồi thu nhỏ lại cho vừa màn hình. Hậu quả: chữ nhỏ li ti, người dùng phải zoom tay mới đọc được, và Google đánh giá trải nghiệm di động của trang là kém.

width=device-width báo trình duyệt dùng chiều rộng thiết bị làm layout viewport. initial-scale=1 giữ tỉ lệ zoom ban đầu là 100%, không tự phóng to hay thu nhỏ. Hai tham số này gần như bắt buộc với mọi dự án web hiện đại.

Các đơn vị CSS dựa trên viewport

CSS cung cấp một nhóm đơn vị tính dựa trên kích thước viewport. Nhóm cũ (vw, vh) đã có từ lâu; nhóm mới (dvh, svh, lvh) được thêm từ 2022 để giải quyết vấn đề thanh địa chỉ trên mobile:

Đơn vịÝ nghĩaGhi chú
vw1% chiều rộng layout viewportDùng tốt cho chiều rộng
vh1% chiều cao layout viewportHay bị che bởi thanh địa chỉ trên mobile
dvh1% chiều cao dynamic viewportThay thế vh cho hero section, hỗ trợ từ 2022
svh1% chiều cao viewport nhỏ nhấtChiều cao khi thanh địa chỉ hiện đầy đủ
lvh1% chiều cao viewport lớn nhấtChiều cao khi thanh địa chỉ thu gọn
So sánh vh và dvh trên mobile, hero section bị che và không bị che
Với height: 100vh, hero section bị che bởi thanh địa chỉ. Dùng 100dvh thì hiển thị đầy đủ.

vh truyền thống hay gây lỗi trên mobile: phần tử height: 100vh bị che bởi thanh địa chỉ của Chrome/Safari trên điện thoại. Từ 2022-2023, dvh (dynamic viewport height) giải quyết vấn đề này. Tính đến giữa 2025, Chrome 108+, Safari 15.4+, Firefox 101+ đều hỗ trợ, nên dvh đã an toàn để dùng trong dự án mới.

Cách xem viewport hiện tại bằng DevTools

Chrome DevTools cho phép xem và thay đổi kích thước viewport ngay trong trình duyệt:

  1. Nhấn F12 mở DevTools
  2. Bật Device Toolbar bằng Ctrl+Shift+M hoặc nhấn biểu tượng điện thoại góc trên trái
  3. Số hiện phía trên là kích thước viewport hiện tại (chiều rộng x chiều cao)
  4. Kéo cạnh cửa sổ hoặc gõ thẳng con số để thay đổi

Bạn cũng có thể kiểm tra bằng JavaScript ngay trong Console của DevTools:

console.log(window.innerWidth, window.innerHeight); // layout viewport
console.log(screen.width, screen.height); // màn hình vật lý

Hai con số này khác nhau là điều bình thường trên điện thoại, đúng theo bản chất của CSS pixel và Device Pixel Ratio (DPR).

Người không rành kỹ thuật cần biết gì về viewport?

Khi thuê làm web, điều đáng kiểm tra là: web có khai báo thẻ meta viewport chưa? Thiếu dòng đó là web trông xấu trên điện thoại từ bước đầu tiên. Đây là thứ đơn giản nhưng hay bị bỏ qua ở các theme cũ hoặc khi tự cài WordPress mà không kiểm tra lại.

Cách tự kiểm tra nhanh: mở web trên điện thoại, dùng 2 ngón tay zoom ra. Nếu web zoom ra rất lớn và chữ bỗng to bất thường, rất có thể initial-scale=1 đang bị thiếu hoặc bị ghi đè bởi một theme hay plugin nào đó. Đây là lỗi cần sửa, không phải thứ chấp nhận được.

Muốn tìm hiểu thêm về cách thiết kế web co giãn theo từng thiết bị, xem thêm bài về flexboxCSS grid để hiểu công cụ layout phổ biến nhất hiện nay.

Câu hỏi thường gặp về viewport

Viewport và độ phân giải màn hình có khác nhau không?
Khác nhau. Độ phân giải là số pixel vật lý thực của màn hình (ví dụ iPhone 15 là 1179px). Viewport là số CSS pixel trình duyệt dùng để tính layout (390px). Tỉ lệ giữa hai số này gọi là Device Pixel Ratio (DPR). iPhone 15 có DPR=3 vì 1179 chia 390 bằng 3.
Tại sao có lúc font chữ trên điện thoại tự to lên không mong muốn?
Đó là tính năng text size adjust (điều chỉnh cỡ chữ tự động) của trình duyệt mobile. Khi phát hiện layout viewport rộng hơn thiết bị, trình duyệt tự phóng to chữ để dễ đọc. Thêm -webkit-text-size-adjust: 100% vào CSS để tắt hành vi này nếu cần.
dvh đã dùng được rộng rãi chưa hay còn phải dùng fallback?
Hỗ trợ từ Chrome 108, Safari 15.4, Firefox 101, tức là từ cuối 2022. Tính đến giữa 2025, gần như mọi thiết bị đang dùng thực tế đều hỗ trợ. Có thể dùng dvh trực tiếp cho dự án mới mà không cần fallback phức tạp.
Viewport có ảnh hưởng đến SEO không?
Có. Google đánh giá trải nghiệm di động, và thiếu meta viewport hoặc layout vỡ trên mobile là tín hiệu tiêu cực. Lighthouse (công cụ đo hiệu suất web của Google) có hạng mục kiểm tra meta viewport và responsive design riêng.

Muốn website hiển thị chuẩn trên mọi thiết bị từ nền móng, xem thêm dịch vụ thiết kế website responsive của Web22.

Đọc tiếp

Bài viết
cùng chủ đề.

Tất cả bài viết