ToolHub
View All Posts

Hướng Dẫn Chuyển Đổi Đơn Vị CSS: px, rem, em, %, vw, vh

Đơn vị CSS là nền tảng của mọi thiết kế web. Chúng định nghĩa kích thước, khoảng cách và vị trí trên tất cả các yếu tố. Chọn đúng đơn vị cho đúng ngữ cảnh có thể tạo ra sự khác biệt giữa một trang web responsive, dễ tiếp cận và một trang web bị hỏng trên các thiết bị khác nhau. Hướng dẫn này bao gồm mọi đơn vị CSS, khi nào nên sử dụng chúng và cách chuyển đổi giữa chúng.

Hiểu Về Đơn Vị CSS

Đơn vị CSS được chia thành ba loại: tuyệt đối (kích thước cố định), tương đối (tương đối so với thứ khác) và viewport (tương đối so với kích thước viewport). Mỗi loại có những trường hợp sử dụng cụ thể và hiểu khi nào nên sử dụng mỗi loại là điều cần thiết để thiết kế web chuyên nghiệp.

px (Pixel)

Đơn vị tuyệt đối có kích thước cố định không thay đổi dựa trên ngữ cảnh. Chúng hữu ích cho phương tiện in ấn và các tình huống mà kích thước chính xác là quan trọng, nhưng ít linh hoạt hơn cho thiết kế web responsive.

pt, cm, mm, in

Đơn vị tương đối điều chỉnh dựa trên một số giá trị tham chiếu, làm cho chúng trở nên cần thiết cho thiết kế responsive. Chúng tự động điều chỉnh khi người dùng thay đổi kích thước font hoặc khi bố cục thay đổi.

Đơn Vị Tuyệt Đối

), thường là 16px theo mặc định của trình duyệt. Điều này làm cho nó nhất quán và có thể dự đoán trên toàn bộ trang.

rem (Root EM)

em

em tương đối so với kích thước font của chính phần tử đó (hoặc phần tử cha đối với font-size). Điều này làm cho nó hữu ích cho các thành phần cần co giãn theo tỷ lệ, nhưng có thể gây ra hiệu ứng lãi kép nếu không được quản lý cẩn thận.

Đơn Vị Tương Đối

Phần trăm tương đối so với phần tử cha. Đối với chiều rộng, nó là phần trăm chiều rộng của cha. Đối với chiều cao, nó là phần trăm chiều cao của cha (nhưng chỉ khi cha có chiều cao rõ ràng). Đối với font-size, nó tương đối so với kích thước font của cha.

% (Phần Trăm)

Đơn vị viewport tương đối so với kích thước viewport của trình duyệt. Chúng lý tưởng cho bố cục toàn màn hình, typography lưu động và các thành phần cần co giãn theo kích thước màn hình.

rem = px / root-font-size

// With default root font size of 16px:
12px = 12 / 16 = 0.75rem
16px = 16 / 16 = 1rem
24px = 24 / 16 = 1.5rem
32px = 32 / 16 = 2rem
48px = 48 / 16 = 3rem

ex và ch

Đơn vị viewport mới giải quyết các vấn đề với thanh địa chỉ di động. dvh (dynamic viewport height) điều chỉnh khi thanh địa chỉ trình duyệt xuất hiện hoặc biến mất. svh (small viewport height) sử dụng kích thước viewport với thanh địa chỉ mở rộng. lvh (large viewport height) sử dụng viewport với thanh địa chỉ thu gọn.

html {
    font-size: 62.5%; /* 1rem = 10px */
}

body {
    font-size: 1.6rem; /* 16px */
}

h1 {
    font-size: 3.2rem; /* 32px */
    margin-bottom: 1.6rem; /* 16px */
}
Mẹo chuyên nghiệp: Đặt font-size gốc thành 62.5% (10px) để làm cho việc tính toán rem trở nên dễ dàng. Sau đó, 1.6rem = 16px, 2.4rem = 24px, v.v. Tuy nhiên, hãy cân nhắc rằng điều này có thể ảnh hưởng đến khả năng tiếp cận đối với người dùng có cài đặt font tùy chỉnh.

Đơn Vị Viewport

Chọn đúng đơn vị phụ thuộc vào những gì bạn đang tạo kiểu và hành vi bạn muốn. Dưới đây là các khuyến nghị dựa trên các tình huống phổ biến:

vw và vh

/* Parent: font-size 16px */
.parent {
    font-size: 1em; /* 16px */
}

/* Child: 1.2em of parent's 16px = 19.2px */
.child {
    font-size: 1.2em;
}

/* Grandchild: 1.2em of child's 19.2px = 23.04px */
.grandchild {
    font-size: 1.2em;
}

Chuyển đổi giữa các đơn vị là cần thiết khi làm việc với thông số thiết kế hoặc di chuyển giữa các hệ thống đơn vị khác nhau.

vmin và vmax

Khi Nào Sử Dụng Mỗi Đơn Vị

Để chuyển đổi px sang rem, chia giá trị px cho kích thước font gốc (thường là 16px). Ví dụ: 32px / 16 = 2rem.

dvh, svh, lvh

Đơn VịLoạiTương Đối Với
pxTuyệt đốiKhông có gì (cố định)
Rất caoViền, bóng, kích thước chính xácrem
Tương đối)Cao
Kích thước font, khoảng cách, bố cụcemTương đối
Font-size của phần tửTrung bìnhThành phần co giãn theo tỷ lệ

Kích Thước Font

Để chuyển đổi rem sang px, nhân giá trị rem với kích thước font gốc. Ví dụ: 1.5rem * 16px = 24px.

/* Modern approach */
.hero {
    height: 100dvh; /* Dynamic viewport height */
}

/* Fallback for older browsers */
.hero {
    height: 100vh;
    height: 100dvh;
}

Chuyển Đổi Giữa Các Đơn Vị

Công thức chung rất đơn giản. Đối với px sang rem: rem = px / kích thước font gốc. Đối với rem sang px: px = rem * kích thước font gốc. Đối với px sang em: phức tạp hơn vì em phụ thuộc vào ngữ cảnh.

Công cụ chuyển đổi đơn vị CSS miễn phí của chúng tôi xử lý tất cả các phép tính này ngay lập tức. Nhập giá trị của bạn, chọn đơn vị nguồn và đích, và nhận kết quả chính xác. Nó hỗ trợ px, rem, em, pt, %, vw, vh và nhiều đơn vị khác.

Các Mẫu Thiết Kế Responsive

Hàm clamp() tạo ra typography responsive mượt mà mà không cần media queries. Nó chấp nhận giá trị tối thiểu, giá trị ưu tiên (thường dựa trên viewport) và giá trị tối đa. Font sẽ co giãn mượt mà giữa các giới hạn này khi viewport thay đổi.

/* Font size scales from 1rem to 2.5rem based on viewport */
h1 {
    font-size: clamp(1rem, 2.5vw + 0.5rem, 2.5rem);
}

/* Padding scales proportionally */
.container {
    padding: clamp(1rem, 3vw, 3rem);
}

CSS Grid với đơn vị fraction (fr) và repeat() với auto-fit hoặc auto-fill tạo ra lưới responsive mà không cần media queries. Các mục tự động xuống dòng khi không gian không đủ.

Các Lỗi Thường Gặp Về Đơn Vị

Sử dụng width: 100% và height: auto cho hình ảnh responsive. Đối với video, sử dụng kỹ thuật padding-bottom aspect-ratio. Đối với hero toàn màn hình, sử dụng 100vw / 100vh, nhưng kiểm tra trên di động nơi thanh địa chỉ ảnh hưởng đến chiều cao viewport.

Phổ BiếnTrường Hợp Sử Dụng em (at 16px) vw (1920px) % (of 16px)
%Tương đốiPhần tử chaCaoChiều rộng, bố cục linh hoạt
vwViewport1% chiều rộng viewportCaoPhần hero toàn chiều rộng
vhViewport1% chiều cao viewportCaoPhần hero toàn màn hình
vminViewportKích thước viewport nhỏ hơnThấpHình vuông responsive
vmaxViewportKích thước viewport lớn hơnThấpLớp phủ toàn màn hình
dvhViewportChiều cao viewport độngĐang tăngViewport di động
48px3rem3em2.5vw300%
64px4rem4em 3.333vw 400%

Câu Hỏi Thường Gặp

Sử dụng đơn vị viewport với clamp() cho khoảng cách thích ứng. Điều này tạo ra khoảng cách co giãn giữa di động và desktop mà không cần breakpoint.

Bộ Chuyển Đổi Đơn Vị CSS

Frequently Asked Questions

Chiều Rộng và Chiều Cao

Sử dụng rem cho kích thước font, px cho viền, % cho chiều rộng và đơn vị viewport cho các phần hero toàn màn hình. Tránh sử dụng px cho font trừ khi bạn có lý do cụ thể (như khớp với thông số thiết kế).

Khoảng Cách (Padding/Margin)

rem tương đối so với phần tử gốc (nhất quán), em tương đối so với phần tử cha (theo ngữ cảnh). Sử dụng rem cho khoảng cách và kích thước font toàn cục, em cho các thành phần cần co giãn theo tỷ lệ với kích thước font cục bộ của chúng.

Media Queries

Sử dụng đơn vị viewport cho các phần hero toàn màn hình, typography lưu động và bố cục cần lấp đầy màn hình bất kể thiết bị. Sử dụng vw cho chiều rộng, vh cho chiều cao và dvh cho chiều cao viewport động trên di động.

px Sang rem

Bắt đầu với kích thước font gốc của bạn (thường là 16px). Chia giá trị px mong muốn cho kích thước font gốc. Ví dụ: 24px / 16 = 1.5rem. Sử dụng công cụ chuyển đổi đơn vị CSS của chúng tôi để có kết quả tức thì.

rem Sang px

Có, nhưng có những lưu ý. 100vh trên trình duyệt di động có thể bao gồm không gian phía sau thanh địa chỉ, gây ra vấn đề cuộn. Sử dụng dvh (dynamic viewport height) để có kết quả tốt hơn trên di động. Luôn kiểm tra trên thiết bị di động thực tế, không chỉ trong DevTools.

ToolHub's collection of 300+ free online tools including CSS unit converters, formatters, and more — no sign-up required.