- CSS Flexbox Playground là công cụ học tập cho phép thay đổi các thuộc tính Flexbox theo thời gian thực và xem sự thay đổi của layout
- Khi điều chỉnh các control, bạn có thể so sánh ngay tác động của thiết lập flex lên cách bố trí trên màn hình
- Ví dụ mặc định bắt đầu với tổ hợp
display: flex, flex-direction: row, justify-content: space-around, align-items: flex-start, flex-wrap: nowrap
- Các mục từ
1 đến 5 trên màn hình di chuyển theo thay đổi thiết lập, giúp dễ dàng quan sát kết quả layout bằng mắt
- Có thể sao chép mã CSS được tạo ra, thuận tiện để đưa các thiết lập đã thử nghiệm vào mã thực tế
Công cụ thử nghiệm Flexbox theo thời gian thực
- CSS Flexbox Playground là công cụ tương tác để học và thử nghiệm các thuộc tính Flexbox
- Khi điều chỉnh các control, thay đổi layout được phản ánh theo thời gian thực
- Có thể sao chép mã CSS được tạo ra từ kết quả thử nghiệm
Thiết lập ví dụ mặc định
- Thiết lập
.container trong ví dụ sử dụng CSS sau
.container {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: flex-start;
flex-wrap: nowrap;
}
- Trên màn hình hiển thị các mục
1, 2, 3, 4, 5, cho phép kiểm tra kết quả bố trí bằng Flexbox
1 bình luận
Ý kiến trên Hacker News
Bản thân Flexbox thì đơn giản và hợp lý, nhưng tên thuộc tính và giá trị lại được đặt theo kiểu ủy ban nên không trực quan
Cố nhớ xem
justify-contentvàalign-itemscái nào là cái nào rồi cuối cùng đành bỏ cuộc, cứ đổi qua đổi lại đủ thứ cho đến khi chạy đượcCũng có một hướng dẫn tương tự cho Grid và bên đó cũng rất xuất sắc
Điều này đặc biệt quan trọng khi trong SPA cần các hộp lấp đầy màn hình nhưng không bị tràn. Kết cục là lại chèn những thiết lập hoàn toàn không trực quan như
min-width: 0vào đủ chỗ, chỉnh thêm vài thứ nữa rồi cuối cùng cũng ra somehowCó cảm giác có thể tạo ra vài lớp CSS để bao trùm hết mấy trường hợp này, nhưng vẫn chưa tìm được lời giải phù hợp cho mọi tình huống
display: flexthì nhiều thuộc tính Flexbox sẽ được trực quan hóa bằng biểu tượng, và có thể bấm để thiết lập ngayGần như mọi trang đều trở thành sân thử nghiệm
justify-content: centerthì làjustify-center, cònalign-items: centerlại làitems-center, không hiểu vì sao họ làm vậyjustify-contentnên được gọi làmain-axis, cònalign-itemslàcross-axisHiểu được điều này thì toàn bộ Flexbox sẽ dễ hơn nhiều
Dù đã được nhắc nhiều rồi, tôi vẫn luôn khuyên dùng Flexbox Froggy https://flexboxfroggy.com/ và những người khác cũng học rất nhanh
Để học CSS Grid thì https://cssgridgarden.com/ cũng rất tốt
Nó hơi giống https://www.codemonkey.com/ vốn thiên về trẻ em hơn
Khi tạo mã Bootstrap thì https://build.layoutit.com/ hữu ích, còn cho CSS Grid thì có https://grid.layoutit.com/ . Tuy nhiên hơi tiếc là cái đầu chỉ hỗ trợ đến Bootstrap 4 chứ không phải Bootstrap 5
Rất khuyến nghị hướng dẫn của Josh https://www.joshwcomeau.com/css/interactive-guide-to-flexbox/
Nó đi sâu vào các bẫy và mẹo nâng cao hơn như
flex-basis, lề tự động,min-widthTôi cứ nghĩ mình đã hiểu khá rõ Flexbox và các thành phần Tailwind CSS, nhưng bài này giải tỏa rất đúng cơn khát về nền tảng lý thuyết
Đây là một playground tốt
Vài năm trước tôi cũng từng làm một hướng dẫn tương tác có chèn playground tương tự ở phần cuối: https://lik.ai/guides/an-interactive-guide-to-flexbox/
Thỉnh thoảng nó khá hữu ích để gợi lại trí nhớ
Đã là năm 2025, đã qua 2 năm và 3 tutorial nhưng tôi vẫn chưa dùng Flexbox cho ra hồn
https://flexboxfroggy.com/ cũng không giúp được bao nhiêu
justifyvàalignlúc nào cũng bị ngược trong lần thử đầu tiênTôi có thể nhớ đủ thứ trong nhiều năm, kể cả layout bằng CSS float, nhưng với Flexbox thì chỉ cần vài tháng không dùng là quên mất 80%, lại phải đọc từ đầu và tốn thời gian trong playground
Vấn đề là có quá nhiều tên thuộc tính, mà khá nhiều trong số đó không trực quan hoặc thậm chí nghe như đặt sai tên. Có khi đặt bằng ký hiệu một hai chữ còn cũng chẳng khác mấy
Hy vọng công cụ này sẽ giúp được, và nếu còn thiếu gì thì mong mọi người cho biết
Tại sao lại đặt tên thuộc tính là
justify-contentvàalign-itemsnhỉ?main-axis-arrangementvàcross-axis-alignmentchẳng phải hợp lý hơn sao?color,text-align,position: absolutevàposition: fixedcũng vậy, màabsolutevề mặt kỹ thuật thì vẫn là tương đốijustify-items,justify-self, nên vẫn có tính nhất quánNhưng dù vậy,
align-contentvẫn rất dễ gây nhầm lẫngrid-templateghi trục y trước cũng gây rối:y1 / x1 / y2 / x2Thêm nữa là nó cũng không bắt đầu từ 0, nên lúc nào cũng quên
Có thể làm rất nhanh một plugin bí danh cho Tailwind kiểu ánh xạ
cross-axis-centerthànhalign-items: center, vàmain-axis-betweenthànhjustify-content: space-betweenTất nhiên có thể thay đổi được, nhưng hành vi mặc định của Flexbox thì mẹo này vẫn đủ dùng
Khi học Flexbox, tôi đã làm một cheat sheet để tra thuộc tính
Có thể cũng hữu ích cho người khác: https://darekkay.com/flexbox-cheatsheet/
Dùng như một cheat sheet trực quan để xem nhanh thì tốt, nhưng rốt cuộc vẫn phải dùng khắp các dự án thì mới ngấm được
Cú pháp nhìn chung khá tự giải thích, nhưng
rowvàcolumnlà ngoại lệTôi chưa từng vật lộn quá nhiều với phần lớn Flexbox hay Grid, nhưng có thể thấy nhiều người rất hay nhầm. Hiểu box model và dùng Firefox DevTools sẽ giúp rất nhiều khi học mô hình Flexbox. Nó trực quan hóa container khá tốt, và giờ có vẻ Chrome DevTools cũng làm được tương tự.
flexboxfroggy và cssgridgarden cũng hữu ích để luyện tập. Dù vậy, mỗi lần cần xem cú pháp tôi vẫn phải mở cheat sheet của CSS-Tricks, và
rowhaycolumnthì chưa bao giờ đoán đúng ngay lần đầuCó thể bật tắt nhanh chế độ Flex https://imgur.com/a/17iy1eN
Công cụ này có vẻ quá hạn chế vì chỉ xử lý 4 thuộc tính của container
Các thuộc tính của phần tử con vốn khá quan trọng trong Flexbox thì lại bị bỏ qua hoàn toàn
Sẽ rất hay nếu có một bộ bài tập thú vị để luyện CSS layout
Sẽ càng tốt hơn nếu có phần giải thích, chú giải được viết kỹ, và cả những bài tập gỡ lỗi kiểu như “vì sao đoạn mã này không tạo ra layout như mong muốn”
ChatGPT đã giúp khá nhiều trong việc debug các vấn đề CSS. Không phải lúc nào cũng đúng, nhưng nhìn chung nó chỉ ra đúng hướng. Dù vậy, tôi vẫn muốn hiểu sâu hơn CSS thực sự hoạt động thế nào. Tôi cũng đã đọc sách và tutorial, và biết rốt cuộc nó là một tập hợp các quy tắc, nhưng việc áp dụng thật chính xác thì khó.
Tôi thường nhờ nó sửa lại CSS để cho ra hình dạng mình muốn, và nó nhanh hơn nhiều so với việc lục lọi tài liệu