2012-02-09 9 views
9

Sto provando a utilizzare display: table con fieldset, ma non si adatta in modo corretto. La stessa cosa funziona se cambio <fieldset> in <div>.Fieldset non supporta la visualizzazione: table/table-cell

Ho provato con Safari e Firefox.

Mi manca qualcosa?

http://jsfiddle.net/r99H2/

+0

Sembra funzionare perfettamente bene per me, ma probabilmente dovresti avere un elemento con 'display: table-row' all'interno del fieldset e contenente le celle. –

+0

Funziona in IE8/IE9, Opera. Non funziona nemmeno in Chrome canarino o Firefox ogni notte. – thirtydot

risposta

14

In sostanza, il rendering di default di fieldset non può in realtà essere espresso in CSS. Di conseguenza, i browser devono implementarlo in termini non CSS e questo interferisce con l'applicazione di CSS all'elemento.

Praticamente qualsiasi elemento che non può essere ricreato utilizzando puro CSS avrà problemi di questo tipo.

+1

+1 Ora questo ha senso per me: http://stackoverflow.com/questions/6481944/why-do-fieldsets-clear-floats – BoltClock

4

fieldset è un elemento con un comportamento speciale, quindi è probabile che per questo problema si verifichi.

Aggiungi un altro div wrapper nel tuo wrapper fieldset e usa il div. Cambia il fieldset in posizione normale o blocca.

<fieldset style="background: pink; width: 100%"> 
    <div style="display: table; width: 100%"> 
     <div style="display: table-cell; background: red; width: 33%">a</div> 
     <div style="display: table-cell; background: green; width: 33%">b</div> 
     <div style="display: table-cell; background: blue; width: 33%">c</div> 
    </div> 
</fieldset> 
+1

Questo funziona, ma esiste una risorsa che elenca quali elementi hanno quel comportamento speciale? – romaninsh

+0

Dovrai trovarlo nelle rispettive specifiche HTML, ma non sono sicuro che ci sia un elenco di riferimento rapido in giro. – BoltClock