· Working
Auto layout trong Figma là gì? Cách dùng không bị rối
Hug, Fill, Fixed, gap, wrap, grid và Ignore auto layout giải thích bằng bảng, kèm các lỗi người mới hay gặp và cách mỗi thiết lập tương ứng với flexbox trong CSS.
Auto layout là thiết lập của frame trong Figma giúp các layer con tự xếp theo hàng, cột hoặc lưới, với padding và gap do bạn đặt. Khi nội dung đổi, frame tự co giãn theo. Phần hay gây rối nhất là ba chế độ kích thước Hug, Fill và Fixed. Hiểu đúng ba chế độ này là dựng được hầu hết giao diện.
Tôi là Hai Le, UI/UX designer, từng dựng design system cho Car From Japan, Oreka và Joyme. Bài Học Figma từ số 0 đã giới thiệu auto layout ở ngày 3. Bài này đi sâu hơn: từng thiết lập làm gì, vì sao bố cục bị vỡ, và mỗi thiết lập thành dòng CSS nào.
Tên tính năng và phím tắt trong bài được kiểm trên help.figma.com ngày 04/10/2026. Nếu một nút không nằm đúng chỗ tôi tả, hãy gõ tên tính năng vào ô tìm kiếm của Figma.
Thêm và gỡ auto layout như thế nào?
Chọn một hoặc nhiều layer rồi bấm Shift + A. Figma bọc chúng vào một frame auto layout mới, hoặc bật auto layout cho frame đang chọn. Gỡ auto layout bằng Option + Shift + A trên Mac, Alt + Shift + A trên Windows.
Ở cột phải, bạn chọn một trong ba kiểu sắp xếp (flow):
| Flow | Cách xếp | Dùng cho |
|---|---|---|
| Vertical | Từ trên xuống dưới | Form, danh sách, nội dung một cột |
| Horizontal | Từ trái sang phải | Nút có icon, thanh điều hướng, hàng chip |
| Grid | Theo hàng và cột | Thư viện ảnh, dashboard, bố cục bento |
Vertical và Horizontal có thêm Wrap: khi hết chỗ, layer con chuyển sang hàng mới (với Horizontal) hoặc cột mới (với Vertical).
Hug, Fill, Fixed khác nhau thế nào?
Mỗi layer trong auto layout có một chế độ cho chiều rộng và một chế độ cho chiều cao. Hai chiều chọn riêng.
| Chế độ | Hành vi | Áp dụng cho | Ví dụ |
|---|---|---|---|
| Hug contents | Co lại vừa khít nội dung bên trong | Frame auto layout, layer chữ | Nút, chip, badge |
| Fill container | Giãn ra lấp chỗ trống của frame cha | Layer con trong frame auto layout | Ô nhập rộng hết form |
| Fixed | Giữ nguyên số bạn nhập | Cả frame và layer con | Avatar 40px, icon 24px |
Cột "Áp dụng cho" giải thích phần lớn các lần bị rối. Hug cần có nội dung để co theo, nên chỉ có ở frame auto layout và layer chữ. Fill chỉ có ở layer con, vì nó cần có frame cha để lấp vào.
Một quy tắc tôi hay dùng: chiều rộng đi từ ngoài vào, chiều cao đi từ trong ra. Màn hình hoặc cột ngoài cùng để Fixed. Các khối bên trong để Fill theo chiều rộng. Chiều cao thì gần như luôn để Hug, để chữ dài hơn thì khối tự cao lên.
Với layer chữ, Fixed nghĩa là khung chữ không đổi kích thước theo nội dung. Figma cảnh báo điều này có thể làm chữ đè lên layer khác trong frame auto layout. Một đoạn văn trong thẻ nên để chiều rộng Fill và chiều cao Hug, để chữ tự xuống dòng.
Padding, gap và gap Auto dùng khi nào?
Padding là khoảng từ mép frame tới nội dung. Gap là khoảng giữa các layer con. Bạn nhập số cho gap, hoặc với Vertical và Horizontal thì đặt gap là Auto rồi chọn một trong ba cách chia khoảng trống: Between, Around, Evenly.
Tôi dùng gap số cho hầu hết trường hợp, chỉ dùng Auto khi muốn hai đầu bám sát mép. Ví dụ header có logo trái, menu phải: frame Horizontal, rộng Fill, gap Auto kiểu Between.
Nên lấy padding và gap từ một thang cố định, ví dụ bội số của 4, và lưu thang đó thành variable. Bài Design token là gì nói về cách đặt tên và tổ chức thang này.
Khi nào dùng Wrap, khi nào dùng Grid?
Cả hai đều xếp layer thành nhiều hàng, nhưng xử lý cột khác nhau.
| Wrap | Grid | |
|---|---|---|
| Cột có thẳng hàng không | Không, mỗi hàng tự xếp | Có, theo số cột đã đặt |
| Phần tử rộng khác nhau | Hợp | Kém hợp, trừ khi cho ô chiếm nhiều cột |
| Chiếm nhiều ô | Không có | Có Column span, Row span |
| Khoảng cách | Gap như thường | Gap between rows và Gap between columns riêng |
| Dùng cho | Hàng tag, chip lọc, danh sách checkbox nhiều cột | Lưới sản phẩm, dashboard, bento |
Với Grid, bạn đặt Number of columns và Number of rows trong grid picker ở cột phải. Số hàng mặc định là auto, tức là tự thêm hàng khi có thêm phần tử. Mỗi cột hoặc hàng có thể để Fixed, Hug hoặc Fill. Fill dùng đơn vị fr giống CSS grid.
Làm sao đặt một thứ đè lên mà không phá bố cục?
Dùng Ignore auto layout. Tính năng này trước đây tên là absolute position, Figma đổi tên nhưng giữ nguyên cách hoạt động. Chọn layer con rồi bấm Ignore auto layout ở cột phải. Trên Mac, bạn cũng có thể giữ Control khi kéo một layer vào frame auto layout.
Layer đó vẫn nằm trong frame, nhưng nó và các layer anh em bỏ qua nhau khi co giãn. Tôi dùng cho chấm thông báo trên avatar, nút đóng ở góc popup, hay nhãn "Mới" đè lên ảnh thẻ.
Đừng dùng Ignore auto layout để chữa một bố cục đang lệch. Nếu bạn cần nó cho hơn một hai layer trong cùng frame, cách chia frame đang sai.
Min width và max width để làm gì?
Trong dropdown Width hoặc Height ở cột phải có Add min width, Add max width, Add min height, Add max height. Chúng giới hạn khoảng co giãn của Hug và Fill.
Hai chỗ tôi luôn đặt:
- Max width cho đoạn văn. Khi frame rộng ra ở màn hình desktop, dòng chữ dài quá thì mắt khó tìm đầu dòng tiếp theo. Max width giữ cột chữ ở độ dài dễ đọc.
- Min width cho nút. Nút "OK" Hug contents sẽ quá nhỏ để bấm. Min width giữ nút đủ rộng mà vẫn dài ra khi chữ dài.
Gỡ giới hạn bằng Remove min and max trong cùng dropdown.
Vì sao auto layout của tôi bị rối?
Đây là những lỗi tôi gặp nhiều nhất khi xem file của người mới:
| Triệu chứng | Nguyên nhân | Cách sửa |
|---|---|---|
| Chọn Fill nhưng layer không giãn | Frame cha đang Hug | Đổi frame cha sang Fixed hoặc Fill |
| Kéo rộng màn hình, form không giãn theo | Các ô nhập để Fixed | Đổi chiều rộng ô nhập sang Fill |
| Chữ đè lên layer bên dưới | Layer chữ để chiều cao Fixed | Chiều rộng Fill, chiều cao Hug |
| Khoảng cách giữa các khối lệch nhau | Dùng hình chữ nhật trống làm khoảng cách | Xoá hình đó, dùng gap hoặc padding |
| Cây layer lồng 5–6 frame không tên | Bấm Shift + A cho từng cặp layer | Lên khung theo khối nội dung, đặt tên frame theo vai trò |
| Một layer phải ghim vào góc | Kéo tay vị trí trong frame auto layout | Bật Ignore auto layout cho riêng layer đó |
Cách tôi dựng một khối để ít bị rối nhất: phác cây layer bằng chữ trước, rồi mới bấm Shift + A từ trong ra ngoài. Mỗi frame trả lời được câu "khối này xếp theo hướng nào, cách nhau bao nhiêu".
Ví dụ: cấu trúc popup form hỏi xe
Ở Car From Japan, tôi rút gọn popup hỏi xe xuống tiêu đề "Check availability", một dòng thông tin xe, bốn ô liên hệ (tên, email, điện thoại bắt buộc, địa chỉ tuỳ chọn), nút "Add a coupon" và ô tin nhắn điền sẵn. Bạn có thể đọc lý do của từng thay đổi trong case study form inquiry.
Nếu dựng khối này bằng auto layout, tôi sẽ chia frame như sau:
Popup Vertical · Fixed rộng · Hug cao · padding 24 · gap 16
├─ Header Horizontal · Fill rộng · gap Auto (Between)
│ ├─ Tiêu đề Fill rộng
│ └─ Nút đóng Fixed 24 × 24
├─ Xe Horizontal · Fill rộng · gap 12
│ ├─ Ảnh nhỏ Fixed
│ └─ Tên + giá Vertical · Fill rộng · Hug cao
├─ Ô liên hệ Vertical · Fill rộng · gap 12 (mỗi ô Fill rộng)
├─ Add a coupon Hug
└─ Nút gửi Fill rộng · Hug caoTên xe dài thì chỉ dòng "Xe" cao lên, phần dưới tự dịch xuống. Kéo popup rộng ra thì ô liên hệ và nút gửi giãn theo.
Auto layout thành CSS như thế nào?
Auto layout gần như ánh xạ một đối một sang flexbox. Đây là lý do tôi khuyên designer muốn học code bắt đầu từ đây.
| Figma | CSS |
|---|---|
| Vertical / Horizontal | display: flex với flex-direction: column / row |
| Gap | gap |
| Padding | padding |
| Gap Auto: Between / Around / Evenly | justify-content: space-between / space-around / space-evenly |
| Wrap | flex-wrap: wrap |
| Hug contents | Không đặt kích thước, phần tử tự co theo nội dung |
| Fill container (trục chính) | flex: 1 |
| Fill container (trục phụ) | align-self: stretch |
| Fixed | width / height bằng số |
| Min / max width | min-width / max-width |
| Grid | display: grid với grid-template-columns |
| Ignore auto layout | position: absolute trong cha position: relative |
Ví dụ header ở trên viết bằng CSS:
.popup-header {
display: flex;
justify-content: space-between;
align-items: center;
}Khi file Figma dựng bằng auto layout sạch, công cụ AI như Claude Code đọc qua Figma MCP cũng cho ra code gọn hơn hẳn. Bài Figma MCP và Claude Code hướng dẫn cách nối hai công cụ đó. Nếu bạn muốn tự viết phần code, đọc tiếp Claude Code cho designer.
Nên học gì sau auto layout?
Bước tiếp theo là component và variant: biến khối auto layout đã dựng thành khối dùng lại được. Tôi viết riêng về phần này trong bài Component và Variant trong Figma.
Nếu bạn đang tìm một designer dựng được design system và nói chuyện được với dev bằng CSS, phần giới thiệu về tôi có kinh nghiệm và cách liên hệ.
Nguồn
Kiểm ngày 04/10/2026.
- Guide to auto layout, Figma Help Center
- Use the grid auto layout flow, Figma Help Center
- CSS flexible box layout, MDN Web Docs
Câu hỏi thường gặp
- Phím tắt thêm auto layout trong Figma là gì?
- Chọn một hoặc nhiều layer rồi bấm Shift + A. Muốn gỡ auto layout khỏi frame, bấm Option + Shift + A trên Mac hoặc Alt + Shift + A trên Windows.
- Vì sao chọn Fill container nhưng layer không giãn ra?
- Fill container chỉ có tác dụng với layer con nằm trong một frame auto layout. Nếu frame cha đang để Hug contents, nó co vừa nội dung nên không còn chỗ trống nào để layer con lấp vào. Đổi frame cha sang Fixed hoặc Fill rồi thử lại.
- Absolute position trong auto layout giờ ở đâu?
- Figma đã đổi tên tính năng này thành Ignore auto layout, cách hoạt động giữ nguyên. Chọn layer con trong frame auto layout rồi bấm Ignore auto layout ở cột phải. Layer đó vẫn nằm trong frame nhưng không còn tham gia vào dòng sắp xếp.
- Nên dùng Wrap hay Grid cho danh sách thẻ?
- Wrap hợp với các thẻ hoặc chip có độ rộng khác nhau, cứ hết chỗ thì xuống hàng. Grid hợp khi bạn cần cột thẳng hàng, số cột cố định và có ô chiếm nhiều cột, ví dụ dashboard hay bố cục bento.
- Auto layout có giống flexbox trong CSS không?
- Rất gần. Hướng sắp xếp, padding, gap, wrap và các chế độ kích thước đều có thuộc tính CSS tương ứng, nên một frame auto layout dựng gọn thường chuyển thành flexbox gần như một đối một. Kiểu Grid thì tương ứng với CSS grid.
Có thể bạn quan tâm
Claude Code là gì? Cài đặt và chạy lệnh đầu tiên khi chưa biết code
Hướng dẫn cho người chưa từng mở terminal: Claude Code là gì, cần chuẩn bị gì, cài trên macOS và Windows, chạy phiên đầu tiên và sửa các lỗi hay gặp. Mọi lệnh lấy từ tài liệu chính thức của Anthropic.
Working· 2026-10-04
Claude Code cho designer: biến thiết kế Figma thành trang chạy được
Cách một designer dùng Claude Code để đưa thiết kế từ Figma thành trang web thật: chuẩn bị gì, viết quy tắc cho AI ra sao, quy trình sáu bước và những lỗi tôi đã gặp khi dựng chính site này.
Working· 2026-10-04
Claude là gì? Hướng dẫn cho người chưa dùng AI bao giờ
Claude là trợ lý AI của Anthropic. Bài này giải thích Claude làm được gì, gói miễn phí và trả phí khác nhau ra sao, cách mở cuộc trò chuyện đầu tiên, và những chỗ Claude hay sai mà người mới nên biết. Mọi tính năng và giá đều kiểm ở trang chính thức.
Working· 2026-10-04