2013-08-24 16 views
15

Qualcuno può piacere chiarire me su come il nuovo modello di layout Flexbox è meglio delle attuali tabelle modo? (Display : tabella e tutti quelli inclusi nella mia custodia)?flexbox vs tabelle, perché abbiamo bisogno di flexbox?

Non è supportato affatto in IE10 che non è molto buono per il prossimo futuro e non vedo alcun vantaggio sul layout della tabella. Ma ancora, Internet sta iniziando ad essere pieno di "adoratori" di questo nuovo metodo di layout CSS, e tutti gli esempi che vedo possono essere facilmente fatti con normali css senza problemi.


Aggiornamento 25.12.15:

ho utilizzato flexboxes molto da quando sono stati introdotti i browser moderni e aveva smesso di usare display:table e così via, perché flexboxes sono più potenti e facili da usare.

+2

Non ho mai sentito parlare della modella prima, ma a una rapida occhiata, questo sembra fantastico - sembra finalmente fornire un modo semanticamente pulito per fare tutto il materiale di layout che era possibile solo con le tabelle (allineare gli elementi in un griglia in alto/centro/in basso, con un gruppo di elementi estesi dinamicamente) ma senza '

' s o la visualizzazione pazzo 'display: table'. –

+0

'dispay: table' non è affatto folle secondo me ed è molto elegante. descrive un elemento come una tabella e quindi puoi controllare i suoi figli come preferisci, e la parte semantica è sempre tua, flexbox non è HTML, è solo css. – vsync

+1

'display: table' è ancora connesso al concetto di tabelle, che probabilmente non è semanticamente corretto quando si costruisce un layout. Flexbox sembra finalmente rompere con quello, e aggiungendo ulteriori modi per controllare il layout. Stavo aspettando qualcosa di simile (ma ovviamente non è ancora pronto per il mercato di massa se usato da solo ... e non ha senso usarlo in combinazione con 'display: table', dato che è supportato da tutti i browser) –

risposta

17

Ci sono tre distinzioni posso pensare tra l'utilizzo FlexBox e con valori di visualizzazione tabella o galleggia layout di una pagina:

  1. Poter riordinare elementi indipendentemente dall'ordine sorgente HTML, mantenendo elementi nel flusso normale: è possibile farlo specificando un valore intero con la proprietà order.
  2. Richiede meno battitura rispetto ai tradizionali layout float (non sono necessari tutti gli pseudo-elementi per scopi di cancellazione) ed è più semantico, mentre l'uso di float o tabelle per i layout ovviamente non lo è.
  3. La possibilità per gli elementi flessibili di crescere e rimpicciolirsi per riempire lo spazio orizzontale e verticale in base alle dimensioni degli elementi di un antenato, utilizzando le proprietà flex-grow e flex-shrink.

Il problema (come hai sottolineato) è che il supporto è ancora piuttosto brutto; Infatti, Firefox sta ancora implementando una versione precedente del modulo flexbox, quindi devi tenere conto di piccole discrepanze nella sintassi e nel comportamento, a seconda del browser che stai utilizzando. È stato detto abbastanza, tuttavia, che lo è il il futuro per i layout, specialmente per le applicazioni web complesse che spuntano più spesso. Vale la pena imparare se stai bene con un investimento inevitabilmente saggio, al costo di non essere realmente utilizzabile in questo momento.

anche io suggerisco di dare un'occhiata a this smashing magazine article per una semplice introduzione al FlexBox (è scritto poco tempo fa)

+3

http://learnlayout.com/flexbox.html Ora Firefox è abbastanza carino. Anche senza prefisso. – vsync

1

In poche parole, è qualcosa che sarà utile in pochi anni. Come molte tecniche avanzate di CSS, HTML5, ecc., Alcune persone le adotteranno con dolorosi fallimenti e shim/shiv per i prossimi due anni.

Quando i browser lo supportano in futuro, avremo una festa e tutto l'odio per i "vecchi" browser che non li supportano :).

+1

ma posso probabilmente fare tutto ciò che si può pensare con il CSS corrente, non vedo come la Flexbox cambi qualcosa – vsync

+1

@vsync: Probabilmente è possibile ottenere la maggior parte dei risultati senza flexbox, ma in alcuni casi solo se si regola anche il tuo DOM. –

+1

@ DanielA.R.Werner. Sì, l'ho scritto anni fa quando la flexbox era lontana dall'essere stabile e "chiusa". da allora l'ho usato ampiamente – vsync

1

Il modello Flexbox è più potente di tabella di visualizzazione. Flexbox supporta i layout per le lingue da destra a sinistra, ad esempio. E sì, la flexbox è un po 'complessa e questa è una barriera di accesso. I layout float e clearfix sono un hack (intelligente), in qualche modo nello stesso modo in cui i layout di tabella sono un hack, il flexbox è pensato per il layout.

Il supporto del browser sta migliorando di recente, alcuni dicono che dovremmo use it now.Bootstrap 3 tuttavia non fa uso di flexbox, ma posso immaginare che la prossima versione lo farà.

+0

è un "hack" se lo vedi in questo modo, non vedo 'display: table' come un hack, ma come un modo per organizzare le informazioni sulla pagina. e i float possono essere complessi come qualsiasi altra cosa, dipende dall'implementazione. E personalmente, non credo che questo Bootstrap sia stato realizzato da persone di grande talento, solo perché Keanu Reeves è famoso non lo rende un buon attore. Pensaci .. – vsync

+0

scusa, con i layout di tabella mi riferivo a questa tecnica di layout di vecchia scuola usando i 'reali'

's. –

+0

ho well tables ARE per tavoli, non per layout :) – vsync