Wie setzen Sie 'display' - Eigenschaft für das flex-Element

Ich versuche zu konvertieren alte layout basiert auf Tabellen und JS auf die neue Flexbox-mit Abwärtskompatibilität, indem die Tabellen für die alten Browser (speziell IE8, IE9 und Opera 10+).

Das problem ist, dass es keine display:flex-item zu überschreiben, der alte Stil der display:table-cell.

Ich habe versucht, verschiedene Definitionen wie display:inherit, display:initial aber keiner ist in der Lage, um die Anzeige zurücksetzen definition korrekt als flex-Element.

<!-- HTML user list -->
<div class="userDetails layout">
    <div class="picture"><img src="..."></div>
    <div class="details">username, email, etc.</div>
</div>

/* CSS Table Layout */
.layout { display: table; width: 100%; }
.layout > .picture { display: table-cell; width: 30%; }
.layout > .details { display: table-cell; width: auto; }

/* CSS Flexbox - ignored by browsers that does not support it */
/* just an example - should use all versions for best compatibility */
.layout { display: flex; }
.layout > .picture { display: ???; flex: 0 1 30%; }
.layout > .details { display: ???; flex: 1 1 auto; }

Was ich im display für die .details es nicht funktioniert als " flex-Element und nicht wachsen füllen den übrigen Raum.

Eine Idee, wie man das überschreiben, ohne mit JS zu erkennen, browser-version und schalten Sie die Stile?

Ich habe versucht, googeln Lösung, aber die meisten Ergebnisse werden nur Allgemeine Artikel über Flexbox; nur ähnlich ist dieser test, die Sie einfach nicht lösen, die rückwärts compatility.

UPDATE 1:
Dies ist ein JSFiddle demo einer reinen Flexbox-und Flexbox-kombiniert-mit-Tisch-layout. Wenn Sie die Größe der Ergebnis-Fenster, das Reine layout schrumpft, anders als die untere, die kombinieren, Tisch und Flexbox.
Hinweis: in Chrome funktioniert dies ordnungsgemäß, versuchen Sie es in Firefox, IE, Safari, etc.

UPDATE 2:
Safari funktioniert einwandfrei mit dem Präfix-Definitionen... aktualisiert JSFiddle demo

InformationsquelleAutor Radek Pech | 2014-11-26
Schreibe einen Kommentar