Flexbox vs Twitter Bootstrap (veya benzer bir çerçeve) [kapalı]


161

Yakın zamanda Flexbox, en yüksek olana bağlı olarak div'leri aynı yükseklikte yapmak için bir çözüm aradığımı keşfettim .

Okudum aşağıdaki sayfayı CSS-tricks.com üzerinde ve beni ikna flexboxöğrenmek ve kullanmak çok güçlü bir modüldür. Ancak, Twitter Bootstrap'ın (ve benzer çerçevelerin) ızgara sistemleriyle aynı işlevleri (+ elbette çok fazla) sunduğunu da düşündürdü.

Şimdi sorular: Artıları ve eksileri flexboxnelerdir? Flexbox ile kişinin Bootstrap gibi bir çerçeveyle yapamayacağı bir şey var mı (elbette sadece ızgara sisteminden bahsediyor)? Bir web sitesine uygulandığında hangisi daha hızlı?

Sadece ızgara sistemi için, sadece kullanmak daha akıllı flexbox, ama zaten bir çerçeve kullanıyorsanız flexbox, ekleyebileceğiniz bir şey var mı?

flexboxBir çerçevenin "şebeke sistemini" seçmek için herhangi bir neden var mı?


5
Bootstrap ile Flexbox kullanıyorum.
Aibrean

2
Zurb'in Uygulama Vakfı'na bir göz atın . tamamen Flexbox Izgara Sistemi üzerine inşa edilmiştir
Salem Ouerdani


1
Bootstrap 4 artık varsayılan olarak flexbox! Flexbox, ızgara sistemine ve temel bileşenlere benzersiz esneklik ve kontrol sağlayan son derece güçlü bir düzen aracıdır. IE9 desteğini düşürmenin maliyeti vardır, ancak bileşen düzeni, hizalama ve boyutlandırmada önemli iyileştirmeler sağlar.
Nermien Barakat

5
Bunun görüşe dayalı olarak kapatılması gerektiğini kabul etmiyorum. Asker fikir arıyor, gerçek arıyor. "Flexbox'ın artıları ve eksileri nelerdir?" Asker (benim gibi) her bir sistemin güçlü ve dezavantajlarını belirlemeye çalışıyor.
Darin Cardin

Yanıtlar:


107

Birkaç nedenden dolayı, flexbox önyüklemeden çok daha iyidir:

  • Bootstrap, birçok kişinin web için uygun olmadığını söyleyeceği ızgara sistemini yapmak için şamandıralar kullanır; burada flex-box, öğelerin boyutuna ve içeriğine esnek kalarak tersini yapar; pikselleri em / rem ile kullanmakla aynı veya div'larınızı yalnızca kenar boşlukları ve dolgu kullanarak kontrol etmek ve önceden tanımlanmış bir boyut ayarlamak gibi.

  • Bootstrap, float kullandığından, her satırdan sonra net düzeltmeye ihtiyaç duyar veya farklı yükseklikte yanlış hizalanmış div'ler alırsınız. Flex-box bunu yapmaz ve bunun yerine kaptaki en yüksek div değerini kontrol eder ve yüksekliğine yapışır.

Flex-box üzerinde bootstrap ile gidebilmemizin tek nedeni tarayıcı desteğinin olmaması (özellikle IE) (zaten ölüyor). Ve bazen her ikisi de aynı webkit motorunu kullanmasına rağmen Chrome ve Safari'den farklı davranışlar elde edersiniz.

Düzenle:

BTW karşılaştığınız tek sorun eşit yükseklik sütunlarıysa, bunun için birkaç çözüm var:

  • display: tableEbeveyn display: table-cell;üzerinde, çocuk üzerinde kullanabilirsiniz . Bkz ekranda aynı yüksekliği elde etmek için? Tabloda hücreli

  • Her div için mutlak konumlandırma kullanabilirsiniz:
    position: absolute; top: 0; bottom: 0;

  • Ayrıca jquery / JS çözümü ve daha sonra eklemeye çalışacağım şu anda hatırlayamadığım başka bir çözüm var.

Düzenleme 2:

Ayrıca http://chriswrightdesign.com/experiments/flexbox-adventures/ & https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties adresini ziyaret edin , esnek kutunun nasıl çalıştığına ilişkin .

Düzenleme 3: https://kyusuf.com/post/almost-complete-guide-to-flexbox-without-flexbox

Düzenleme 4: https://caniuse.com/#feat=flexbox


1
Yorumun için teşekkürler. İkisinin "daha iyi" ne olduğuna dair herhangi bir açıklama bulamadım, umarım sorum (ve sizin ve gelecekteki cevaplarınız) insanların karar vermesine yardımcı olacaktır. Neyse ki, IE 11 şu anda (IE10'un desteklediği flexbox) önceki üç versiyondan daha büyük bir pazar payı alıyor , bu yüzden gözlerimde kullanmak güvenlidir. Bir çerçeve kombinasyonu kullanma fikriniz nedir ve flexbox? Elbette çerçevenin ızgara sistemini yok saymak.
Rvervuurt

2
Flexbox, daha güçlü bir ızgara sistemi oluşturmak için daha kolay bir şekilde kullanılabilir, ancak tek başına bir ızgara sistemi değildir. Daha İyi, Daha Basit Izgara Sistemleri bazı fikirler gösterir ve ZURB Foundation for Apps düzen amacıyla flexbox kullanır
ckuijjer

Aslında u her ikisini de kullanabilirsin, eğer istediğin en iyi seçim olduğuna inanıyorum, çünkü senin zihnini zaten bir süredir alışkın olduğun bir şeyin etrafına sarmana gerek yok (ötesinde bir şey bilmeyenler için BS), ama benim için flex-box satış noktası u sadece JS kullanarak ancak tek bir kod satırı yazmadan alabilirsiniz aynı esnekliğe sahip olmasıdır.
ctf0

Tam uyumluluk verileri: caniuse.com/#feat=flexbox Eski Android cihazlarda da sorunlar olduğunu unutmayın.
cvrebert

Baraj, ve neredeyse kullanmak için orada olduğumuzu sanıyordum, başka bir yıl sürecek gibi görünüyor ya da b4 vahşi doğada görüyoruz, heads-up için teşekkürler.
ctf0

6

Flexbox'ı kullanmam (bunu okudum ve harika görünüyor) ama bir Bootstrap ön uç geliştiriciyim. Son kararı vermeden önce Flexbox baskı sayfalarını test etmenizi öneririm. Bilirsiniz ... Bazen baskı stilleri korkunç bir baş ağrısıdır ve baskı formatlarını tasarlamam gerektiğinde Bootstrap bana çok yardımcı olur.


Bu tam olarak neden float ızgarasını yalnızca bootstrap baskı sınıflarıyla birlikte yazdırılabilir
div'ler için kullanacaksınız

1

Korkarım CSS hileleriyle ilgili başka bir makaleyi kaçırdınız :

Not: Flexbox düzeni, bir uygulamanın bileşenleri ve küçük ölçekli mizanpajlar için en uygunken, Izgara düzeni daha büyük ölçekli mizanpajlar için tasarlanmıştır.

Bu, denemeyebileceğiniz anlamına gelmez, sadece iki kez düşünün. Ve hepsi sonunda istenen tarayıcı desteğine bağlıdır.


24
Makalenin önyükleme kılavuzundan değil, yeni ortaya çıkan bir Izgara düzeninden bahsettiğini anladığınızdan emin olun.
getsetbro

5
Bunu özlediğimi söylemeliyim! :) Düzeltme için teşekkürler.
Kout

Seçilmiş, amaç ve amaç çatışması olmadan esnek kutu ve ızgarayı nasıl kullanacağınıza çok açık bir ayrım yaptınız ve benim için bootstrap ızgarası mı yoksa ızgara ayout'u mu demek istediğiniz önemli değil
Ahmad Farouk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.