Công cụ chuyển đổi đơn vị CSS là công cụ dịch các giá trị độ dài giữa các hệ thống đo lường CSS khác nhau. CSS định nghĩa hơn một chục đơn vị độ dài, chia thành hai nhóm: đơn vị tuyệt đối như px, pt, cm và in ánh xạ tới các kích thước vật lý cố định, và đơn vị tương đối như rem, em, vw, vh và % phụ thuộc vào ngữ cảnh như kích thước font hay kích thước viewport.
Trình duyệt quy đổi tất cả độ dài CSS về đơn vị pixel trong quá trình render. Khi bạn viết 1.5rem, trình duyệt nhân 1.5 với root font-size (thường là 16px) để được 24px. Khi bạn viết 50vw, nó lấy một nửa chiều rộng viewport hiện tại. Hiểu rõ các mối quan hệ này là cần thiết để xây dựng layout mở rộng tốt trên nhiều thiết bị và tôn trọng các tuỳ chọn của người dùng như kích thước font tuỳ chỉnh đã đặt trong trình duyệt.
Đặc tả CSS Values and Units Module Level 4 (W3C) định nghĩa tỷ lệ chuyển đổi chính xác giữa tất cả các đơn vị tuyệt đối: 1in = 96px = 72pt = 2.54cm = 25.4mm. Các đơn vị tương đối không có tỷ lệ cố định vì chúng phụ thuộc vào ngữ cảnh thực thi. Công cụ chuyển đổi đơn vị CSS miễn phí cho phép bạn tính toán các mối quan hệ này ngay lập tức với root font-size và kích thước viewport cụ thể của bạn, không cần viết bất kỳ đoạn code nào.
Tại Sao Dùng Công Cụ Chuyển Đổi Đơn Vị CSS?
Chuyển đổi đơn vị CSS thủ công đòi hỏi phải nhớ các tỷ lệ, mở máy tính và kiểm tra lại phép tính. Công cụ này thực hiện chuyển đổi ngay trong trình duyệt của bạn mà không cần bất kỳ thao tác nào thêm.
⚡
Chuyển đổi tức thì
Nhập một giá trị, chọn đơn vị nguồn và xem kết quả ngay lập tức cho cả 10 đơn vị CSS cùng lúc. Không cần thực hiện các phép tính riêng lẻ cho px-to-rem, px-to-vw hay px-to-pt.
🔒
Dữ liệu của bạn luôn riêng tư
Tất cả các phép chuyển đổi chạy cục bộ trong trình duyệt của bạn. Không có giá trị nào được gửi đến máy chủ, ghi log hay lưu trữ. Đóng tab là dữ liệu biến mất.
🎯
Khớp chính xác ngữ cảnh của bạn
Đặt root font-size, chiều rộng viewport, chiều cao viewport và font-size của phần tử cha. Công cụ sử dụng các giá trị này để tạo kết quả chính xác cho các đơn vị rem, em, vw, vh và %.
📏
Bao phủ toàn bộ đơn vị độ dài CSS
Hỗ trợ px, rem, em, vw, vh, %, pt, cm, mm và in. Dù bạn đang làm việc với layout màn hình, stylesheet in ấn hay typography responsive, mọi đơn vị đều được hỗ trợ.
Các Trường Hợp Sử Dụng Công Cụ Chuyển Đổi Đơn Vị CSS
Phát Triển Frontend
Chuyển đổi các giá trị pixel từ file thiết kế sang rem cho component library. Khi mockup Figma chỉ định khoảng cách 24px, hãy chuyển sang 1.5rem để layout mở rộng theo tuỳ chọn font-size của người dùng.
Kỹ Thuật Backend / Full-Stack
Tạo template PDF hoặc email khi kích thước được chỉ định bằng pt hoặc cm. Chuyển đổi các giá trị pixel CSS sang kích thước point sẵn sàng in cho server-side rendering với các công cụ như Puppeteer hay wkhtmltopdf.
DevOps / Pipeline CI
Xác minh rằng các spacing token của design system sử dụng đơn vị nhất quán qua các bước build. Nhanh chóng kiểm tra xem base 16px có tạo ra các giá trị rem như kỳ vọng trong CSS được tạo ra hay không.
QA / Kiểm Thử Giao Diện
Xác minh các computed style trong quá trình kiểm thử trình duyệt chéo. Khi Chrome DevTools hiển thị giá trị tính toán là 14.4px, hãy chuyển sang rem để xác nhận nó khớp với 0.9rem như kỳ vọng trong stylesheet.
Trực Quan Hoá Dữ Liệu
Điều chỉnh kích thước phần tử SVG hoặc canvas theo kích thước viewport. Chuyển đổi chiều rộng biểu đồ pixel cố định sang đơn vị vw để các visualisation chiếm tỷ lệ nhất quán trên màn hình trên các màn hình khác nhau.
Học CSS
Hiểu mối quan hệ giữa rem, em và px bằng cách thử nghiệm với các kích thước cơ sở khác nhau. Thay đổi root font-size từ 16px sang 18px và xem mọi giá trị rem thay đổi như thế nào.
Tham Chiếu Các Đơn Vị Độ Dài CSS
CSS định nghĩa 10 đơn vị độ dài thường dùng. Các đơn vị tuyệt đối có tỷ lệ chuyển đổi cố định sang pixel. Các đơn vị tương đối phụ thuộc vào ngữ cảnh: root font-size cho rem, font-size của phần tử cha cho em và viewport của trình duyệt cho vw và vh.
Đơn vị
Tên
Kích thước mặc định
Tương đối với
px
Pixel
1px
Fixed; 1px = 1/96 of 1in on screens
rem
Root em
16px (default)
Relative to <html> font-size
em
Em
Inherited
Relative to parent element font-size
vw
Viewport width
1% of viewport
Relative to browser window width
vh
Viewport height
1% of viewport
Relative to browser window height
%
Percentage
Varies
Relative to parent property value
pt
Point
1.333px
Print unit; 1pt = 1/72 of 1in
cm
Centimeter
37.795px
Physical unit; 1cm = 96px / 2.54
mm
Millimeter
3.7795px
Physical unit; 1mm = 1cm / 10
in
Inch
96px
Physical unit; 1in = 96px (CSS spec)
Đơn Vị Tuyệt Đối và Tương Đối trong CSS
Việc chọn giữa đơn vị tuyệt đối và tương đối ảnh hưởng đến cách layout phản hồi trên các màn hình khác nhau và cài đặt người dùng. Mỗi nhóm có những đánh đổi riêng biệt.
Đơn Vị Tuyệt Đối (px, pt, cm, mm, in)
Đơn vị tuyệt đối tạo ra cùng kích thước vật lý bất kể ngữ cảnh. Dùng px cho border, shadow và các phần tử không nên co giãn. Dùng pt cho stylesheet in ấn. Đặc tả CSS định nghĩa 1in = 96px, mặc dù kích thước vật lý thực tế thay đổi tuỳ theo DPI màn hình.
Đơn Vị Tương Đối (rem, em, vw, vh, %)
Đơn vị tương đối co giãn theo ngữ cảnh tham chiếu của chúng. Dùng rem cho font-size và khoảng cách để tôn trọng tuỳ chọn người dùng. Dùng em cho việc co giãn nội bộ component (padding tương đối với font-size của chính phần tử đó). Dùng vw/vh cho các layout lấp đầy viewport như hero section.
Bảng Chuyển Đổi px sang rem Phổ Biến
Bảng này giả định root font-size là 16px (mặc định của trình duyệt). Nếu dự án của bạn dùng base khác, hãy chia giá trị pixel cho base của bạn để lấy giá trị rem tương đương.
px
rem
pt
Dùng thường gặp
10
0.625
7.5
Small caption text
12
0.75
9
Body text (compact)
14
0.875
10.5
Default body text
16
1
12
Root font-size (browser default)
18
1.125
13.5
Large body text
20
1.25
15
H4 heading
24
1.5
18
H3 heading
32
2
24
H2 heading
48
3
36
H1 heading
64
4
48
Display / hero text
Ví Dụ Code
Các ví dụ này cho thấy cách chuyển đổi đơn vị CSS theo cách lập trình trong JavaScript, Python, CSS custom properties và Sass.
JavaScript
// px to rem (given root font-size of 16px)
const pxToRem = (px, base = 16) => px / base
pxToRem(24) // → 1.5
// rem to px
const remToPx = (rem, base = 16) => rem * base
remToPx(1.5) // → 24
// px to vw (given viewport width of 1440px)
const pxToVw = (px, viewport = 1440) => (px / viewport) * 100
pxToVw(360) // → 25
// Dynamic calculation using getComputedStyle
const rootFontSize = parseFloat(
getComputedStyle(document.documentElement).fontSize
) // → 16 on most browsers
Root font-size mặc định trong trình duyệt là bao nhiêu?
Tất cả trình duyệt chính (Chrome, Firefox, Safari, Edge) mặc định root font-size là 16px. Điều này có nghĩa 1rem = 16px trừ khi người dùng hoặc stylesheet ghi đè font-size của phần tử html. Một số người dùng tăng giá trị này trong cài đặt trình duyệt vì lý do khả năng tiếp cận, đó là lý do rem là lựa chọn mặc định tốt hơn cho văn bản so với px.
Làm thế nào để chuyển đổi px sang rem?
Chia giá trị pixel cho root font-size. Với base mặc định 16px: 24px / 16 = 1.5rem. Nếu dự án của bạn đặt html { font-size: 10px } (một reset phổ biến), thì 24px / 10 = 2.4rem. Công thức luôn là: rem = px / root-font-size.
Sự khác biệt giữa rem và em là gì?
rem tương đối với font-size của phần tử gốc (thẻ html), trong khi em tương đối với font-size của phần tử cha hiện tại. Điều này có nghĩa rem tạo ra kích thước nhất quán trên toàn trang, trong khi em cộng dồn khi lồng nhau. Một phần tử 2em bên trong phần tử cha 2em trở thành 4 lần kích thước gốc. Dùng rem cho khoảng cách toàn cục và font-size; dùng em khi bạn muốn kích thước co giãn tương đối với văn bản của chính component đó.
Khi nào nên dùng đơn vị vw hoặc vh?
Dùng vw cho các phần tử cần co giãn theo chiều rộng cửa sổ trình duyệt, chẳng hạn hero section toàn chiều rộng hay typography linh hoạt (clamp với vw). Dùng vh cho các section toàn màn hình hay layout theo chiều cao viewport. Hãy thận trọng với vh trên trình duyệt di động khi thanh địa chỉ thay đổi chiều cao viewport; đơn vị dvh (dynamic viewport height) mới hơn giải quyết vấn đề này.
Có thể kết hợp các đơn vị CSS khác nhau trong cùng một thuộc tính không?
Có. Hàm CSS calc() cho phép bạn kết hợp bất kỳ đơn vị nào trong một biểu thức duy nhất. Ví dụ, width: calc(100vw - 2rem) trừ 32px (ở base mặc định) từ chiều rộng viewport đầy đủ. Bạn cũng có thể kết hợp các đơn vị trong clamp(): font-size: clamp(1rem, 2vw + 0.5rem, 2.5rem) tạo ra typography linh hoạt co giãn từ 16px đến 40px.
1pt bằng bao nhiêu pixel trong CSS?
Trong CSS, 1pt = 1/72 inch và 1 inch = 96px, vì vậy 1pt = 96/72 = 1.333px. Tỷ lệ này được cố định trong đặc tả CSS bất kể DPI màn hình. Đơn vị point chủ yếu được dùng trong stylesheet in ấn và tạo PDF. Với thiết kế màn hình, px hoặc rem là lựa chọn tốt hơn.
Reset font-size 62.5% có còn là thực hành tốt không?
Đặt html { font-size: 62.5% } làm cho 1rem = 10px, giúp đơn giản hoá tính toán nhẩm (24px = 2.4rem). Tuy nhiên, cách này yêu cầu bạn phải đặt font-size rõ ràng trên phần tử body và có thể gây ra vấn đề với các component bên thứ ba vốn giả định base mặc định là 16px. Xu hướng hiện đại là giữ mặc định 16px và dùng hàm Sass hoặc plugin PostCSS để xử lý việc chuyển đổi thay thế.