Quay lại blog

Đăng ngày 2026-08-05

Cách chuyển thiết kế Figma thành HTML & CSS sạch (Hướng dẫn từng bước)

Giao một file Figma cho developer thường có nghĩa là ai đó phải ngồi dựng lại thủ công từng frame bằng HTML và CSS: đo khoảng cách, đoán breakpoint, rồi hy vọng trang cuối cùng vẫn khớp với thiết kế sau hàng chục quyết định nhỏ. Bài viết này sẽ đi qua một con đường nhanh hơn — từ một thiết kế Figma hoàn chỉnh đến markup sạch, có ngữ nghĩa.

Vì sao bàn giao Figma sang HTML thủ công lại chậm

Phần lớn thời gian dành cho việc bàn giao không phải là công việc sáng tạo, mà là công việc "dịch":

  • Đọc các thiết lập Auto Layout rồi tự tay chuyển thành các quy tắc Flexbox.
  • Đo lại padding, gap và cỡ chữ vốn đã được định nghĩa sẵn trong file Figma.
  • Quyết định breakpoint responsive nên đặt ở đâu, vì frame Figma thường chỉ có một chiều rộng cố định.
  • Dọn dẹp markup để nó không phải là mười tầng thẻ <div> lồng nhau mà chẳng có ý nghĩa ngữ nghĩa nào.

Không việc nào trong số này khó, nhưng chúng lặp đi lặp lại, và chính công việc thủ công lặp lại là nơi lỗi và sự thiếu nhất quán len lỏi vào.

Bước 1: Xuất frame từ Figma

Thay vì xuất ảnh tĩnh hoặc sao chép style từng layer một, hãy chọn frame bạn muốn chuyển đổi và dùng plugin Figma của MarkupGen để gửi nó vào workspace của bạn. Plugin sẽ nắm bắt cấu trúc, style và hình ảnh của frame cùng một lúc, nên không có gì phải tạo lại từ đầu.

Bước 2: Để cấu trúc tự ánh xạ thành code

Đây là lúc phần lớn công việc thủ công biến mất. Một vài ví dụ về những gì được chuyển đổi tự động:

  • Auto Layout → Flexbox. Các thuộc tính Auto Layout của Figma (direction, gap, padding, alignment) ánh xạ trực tiếp sang cấu trúc CSS Flexbox tương đương, thay vì phải ước lượng bằng mắt.
  • Constraints → breakpoint responsive. Các ràng buộc resize của layout được chuyển thành các quy tắc responsive linh hoạt, thay vì một trang có chiều rộng cố định duy nhất.
  • Layer → HTML ngữ nghĩa. Kết quả xuất ra ưu tiên các thẻ có ý nghĩa thay vì một mớ <div> lồng sâu, không nhãn — gần giống với những gì bạn sẽ viết tay cho một dự án thực tế.

Bước 3: Chọn định dạng đầu ra

Không phải dự án nào cũng cần cùng một loại code. Tùy vào stack bạn đang triển khai, bạn có thể xuất ra:

  • HTML/CSS thuần — cho các trang tĩnh hoặc dự án không cần bước build.
  • Tailwind CSS — các class tiện ích được sinh ra từ chính các token spacing, màu sắc và typography của thiết kế.
  • React — các component bạn có thể chèn thẳng vào một ứng dụng đã có sẵn.

Bước 4: Tinh chỉnh trước khi xuất

Chuyển đổi tự động đã lo phần lớn công việc, nhưng chuyển từ thiết kế sang code hiếm khi hoàn toàn máy móc 100% — nội dung có thể cần chỉnh sửa lại, hoặc một phần nào đó cần điều chỉnh layout thủ công. Trình chỉnh sửa cho phép bạn tinh chỉnh nội dung, font chữ và layout một cách trực quan trước khi tạo gói xuất cuối cùng, và mỗi lần xuất đều được chấm điểm tự động để bạn có thể nhìn thoáng qua là biết kết quả đã sẵn sàng đưa vào sản xuất hay chưa.

"Sạch" ở đây thực sự nghĩa là gì

"Code sạch" không chỉ là một cụm từ marketing — đó là những đặc tính cụ thể, có thể kiểm chứng:

  1. Không có các thẻ <div> bọc thừa xung quanh một phần tử đơn lẻ.
  2. Cấu trúc heading đúng thứ bậc (h1h2h3) thay vì mọi thứ đều được style để trông giống heading.
  3. Sử dụng thẻ ngữ nghĩa ở những chỗ hợp lý — điều mà công cụ tìm kiếm và trình đọc màn hình cũng cần để hiểu trang web.

Điểm cuối cùng đó quan trọng hơn vẻ ngoài của nó — markup dễ cho trình duyệt và crawler phân tích cũng chính là markup dễ đọc hơn cho developer tiếp theo.

Vị trí của quy trình này trong một workflow thực tế

Quy trình này không nhằm thay thế đánh giá của developer — nó loại bỏ bước dịch máy móc để sự đánh giá đó có thể tập trung vào những phần thực sự cần đến: chi tiết tương tác, các trường hợp đặc biệt, và tích hợp trang vào một codebase lớn hơn. Nếu bạn muốn thấy toàn bộ quy trình bốn bước — xuất, dựng, tinh chỉnh, xuất — ngay trong sản phẩm, bạn có thể dùng thử miễn phí trên file Figma của chính mình.