Flexbox vs Twitter Bootstrap (hoặc khung tương tự) [đã đóng]


161

Gần đây tôi đã phát hiện ra Flexboxkhi tôi đang tìm kiếm một giải pháp để làm cho các div có cùng độ cao, tùy thuộc vào mức cao nhất.

Tôi đã đọc trang sau trên CSS-tricks.com và nó đã thuyết phục tôi rằng đó flexboxlà một mô-đun rất mạnh để học và sử dụng. Tuy nhiên, nó cũng khiến tôi suy nghĩ về thực tế rằng Twitter Bootstrap (và các khung tương tự) cung cấp loại chức năng tương tự (tất nhiên là rất nhiều) với hệ thống lưới của họ.

Bây giờ, các câu hỏi là: những ưu và nhược điểm của là flexboxgì? Có điều gì người ta không thể làm với Flexbox mà người ta có thể làm với một khung như Bootstrap (tất nhiên là hoàn toàn nói về hệ thống lưới)? Cái nào nhanh hơn khi được thực hiện trên một trang web?

Tôi đoán khi chỉ dành cho hệ thống lưới, sẽ hoàn toàn thông minh hơn khi sử dụng flexbox, nhưng nếu bạn đang sử dụng một khung công tác, thì có gì flexboxcó thể thêm vào không?

Có bất kỳ lý do để chọn flexbox"hệ thống lưới" trên khung không?


5
Tôi sử dụng Flexbox với Bootstrap.
Aibrean

2
Hãy xem Foundation For Apps của Zurb . nó được xây dựng hoàn toàn trên đỉnh của Hệ thống lưới Flexbox
Salem Ouerdani


1
Bootstrap 4 bây giờ là flexbox theo mặc định! Flexbox là một công cụ bố trí vô cùng mạnh mẽ, cung cấp sự linh hoạt và kiểm soát vô song cho hệ thống lưới và các thành phần cốt lõi. Nó đi kèm với chi phí giảm hỗ trợ IE9, nhưng mang lại những cải tiến đáng kể cho bố cục thành phần, căn chỉnh và kích thước.
Nermien Barakat

5
Tôi không đồng ý rằng điều này nên được đóng lại dựa trên ý kiến. Người hỏi đang tìm kiếm thực tế, không phải ý kiến. "Những ưu và nhược điểm của flexbox là gì?" Người hỏi (như tôi) đang cố gắng xác định điểm mạnh và nhược điểm của từng hệ thống.
Darin Cardin

Câu trả lời:


107

Vì một vài lý do, flexbox tốt hơn nhiều so với bootstrap:

  • Bootstrap sử dụng phao để tạo ra hệ thống lưới, mà nhiều người sẽ nói là không có ý nghĩa đối với web, trong đó flex-box làm ngược lại bằng cách linh hoạt với kích thước và nội dung của vật phẩm; sự khác biệt tương tự như sử dụng pixel so với em / rem hoặc như chỉ kiểm soát div của bạn bằng cách sử dụng lề và phần đệm và không bao giờ đặt kích thước được xác định trước.

  • Bootstrap, bởi vì nó sử dụng float, cần Clearfix sau mỗi hàng hoặc bạn sẽ nhận được các div sai lệch có chiều cao khác nhau. Flex-box không làm điều đó và thay vào đó kiểm tra div cao nhất trong container và bám vào chiều cao của nó.

Lý do duy nhất tôi đi với bootstrap trên flex-box là thiếu hỗ trợ trình duyệt (chủ yếu là IE) (đã chết). Và đôi khi bạn nhận được các hành vi khác nhau từ Chrome và Safari mặc dù cả hai đều sử dụng cùng một công cụ webkit.

Biên tập:

BTW nếu vấn đề duy nhất bạn gặp phải là các cột có chiều cao bằng nhau, có khá nhiều giải pháp cho điều đó:

  • Bạn có thể sử dụng display: tabletrên cha mẹ, một display: table-cell;trên con. Xem Cách lấy cùng chiều cao trong màn hình: ô bảng

  • Bạn có thể sử dụng định vị tuyệt đối trên mỗi div:
    position: absolute; top: 0; bottom: 0;

  • Ngoài ra còn có giải pháp jquery / JS và một giải pháp khác mà tôi không thể nhớ vào lúc này mà tôi sẽ cố gắng thêm sau này.

Chỉnh sửa 2:

Đồng thời kiểm tra http://chriswrightdesign.com/experiment/flexbox-adventures/ & https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properations về cách thức hoạt động của hộp flex.

Chỉnh sửa 3: https://kyusuf.com/post/alest-complete-guide-to-flexbox-without-flexbox

Chỉnh sửa 4: https://caniuse.com/#feat=flexbox


1
Cám ơn bạn đã góp ý. Tôi không thể tìm thấy bất kỳ lời giải thích nào về "tốt hơn" của hai người, vì vậy tôi hy vọng câu hỏi của tôi (và câu trả lời của bạn và trong tương lai) sẽ giúp mọi người quyết định. May mắn thay, IE 11 đang có được thị phần lớn hơn ngay bây giờ so với ba phiên bản trước đó kết hợp (trong đó IE10 hỗ trợ flexbox), vì vậy trong mắt tôi, nó an toàn khi sử dụng. Ý kiến ​​của bạn về việc sử dụng kết hợp một khung và là flexboxgì? Bỏ qua hệ thống lưới của khung trong khi sử dụng nó, tất nhiên.
Rvervuurt

2
Flexbox có thể được sử dụng để tạo ra một hệ thống lưới mạnh hơn theo cách dễ dàng hơn, nhưng bản thân nó không phải là một hệ thống lưới. Tốt hơn, Hệ thống lưới đơn giản hiển thị một số ý tưởng và ZURB Foundation for Apps sử dụng flexbox cho mục đích bố trí
ckuijjer

thực sự bạn có thể sử dụng cả hai nếu bạn muốn, điều mà tôi tin là sự lựa chọn tốt nhất bởi vì bạn không cần phải bận tâm về điều gì đó mà bạn đã quen từ lâu (như đối với những người không biết gì hơn BS), nhưng đối với tôi, điểm bán của flex-box là nó có tính linh hoạt tương tự bạn chỉ có thể có được bằng cách sử dụng JS nhưng không viết một dòng mã nào.
ctf0

Dữ liệu tương thích đầy đủ: caniuse.com/#feat=flexbox Lưu ý rằng Android cũ hơn cũng có vấn đề.
cvrebert

Dam, và tôi nghĩ rằng chúng ta gần như đã sử dụng nó, có vẻ như sẽ mất một năm nữa hoặc một cái gì đó b4 chúng ta thấy nó trong tự nhiên, hơn là cho sự đối đầu.
ctf0

6

Tôi chưa sử dụng Flexbox (tôi đã đọc về nó và có vẻ rất tuyệt) nhưng tôi là một nhà phát triển Bootstrap. Tôi khuyên bạn nên kiểm tra các trang in Flexbox trước khi đưa ra quyết định cuối cùng. Bạn biết đấy ... Đôi khi các kiểu in là một vấn đề đau đầu khủng khiếp và Bootstrap giúp tôi rất nhiều khi tôi phải thiết kế các định dạng in.


đó chính xác là lý do tại sao bạn chỉ sử dụng lưới nổi cho các div có thể in kết hợp với các lớp in bootstrap
ctf0

1

Tôi sợ bạn đã bỏ lỡ một bài viết khác về thủ thuật CSS :

Lưu ý: Bố cục Flexbox phù hợp nhất với các thành phần của ứng dụng và bố cục quy mô nhỏ, trong khi bố trí Lưới được dành cho bố cục tỷ lệ lớn hơn.

Không có nghĩa, bạn có thể không thử, nhưng chỉ cần suy nghĩ hai lần. Và tất cả phụ thuộc vào hỗ trợ trình duyệt mong muốn cuối cùng.


24
Hãy chắc chắn rằng bạn hiểu rằng bài viết đang nói về bố cục Lưới mới nổi - không phải là lưới của bootstrap.
gotetbro

5
Phải nói rằng tôi đã bỏ lỡ điều đó! :) Cảm ơn bạn đã sửa chữa.
Kout

Được nâng cấp, bạn đã chỉ ra một sự khác biệt rất rõ ràng là làm thế nào để sử dụng hộp flex và lưới mà không có xung đột về mục đích và mục đích, và đối với tôi, không có vấn đề gì nếu bạn có nghĩa là lưới bootstrap hoặc lưới ayout
Ahmad Farouk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.