Wir haben eine Reihe von div
Komponenten, die in IE11 flex
sind nach dem gleichen Verhalten in Chrome sollen. Innerhalb der folgenden Geige finden Sie Checkbox-Elemente, die eine "Spalten" -Struktur bilden, sowie Checkbox-Elemente, von denen erwartet wird, dass sie die Breite des gesamten Elternteils füllen.Flexbox erben richtige Breite in IE11
In der zweiten Zeile, in der die CheckBox-Elemente voller Breite beginnen, wird erwartet, dass das Element in die nächste Zeile springt, da das .grid__item-flex
Element die in verfügbare Breite um ein paar Stufen übersteigt. In IE11 wird diese Breite jedoch nicht mehr eingehalten, und somit wird die Breite des übergeordneten Elements weiterhin übersteuert.
Mögliche Lösungen, die fehlgeschlagen sind, umfassen das Erzwingen einer Breite auf .grid__item-flex
; wo wir es 100% Breite geben, aber die oben geschachtelten Checkbox-Elemente verlieren ihre Spaltenstruktur. Außerdem scheint max-width: 100%
als eine Eigenschaft ignoriert zu werden, wenn wir es auf .grid__item-flex
anwenden.
Gibt es eine CSS-Lösung, wo wir
.grid__item-flex
zwingen kann, seine Behälterbreite zu respektieren, ohne die verschachtelte Spalten darüber zu brechen, und stellen Sie sicher, dass das letzte Checkbox Element (darunter) auf der gleichen Linie bleibt?
The JSFiddle that replicates my problem can be found here. Das Beispiel funktioniert wie erwartet in Chrome.
Zusammenfassend gibt es zwei Fälle, in denen flexboxes gleichzeitig arbeiten muss:
1) n Anzahl von div
in einer Reihe, dass, wenn Zeilenbreite überschreitet Eltern Breite
- Wir können dies
flex-wrap: wrap
mit erreichen, aber nur, wenn das Element richtige Breite
2) div
, die auf die nächste Zeile umgebrochen wird, wenn sie eigene Inhalte ist überschreitet Eltern Breite
Dinge, die ich versucht habe:
Erweiterung der Kurzschrift aus
flex: 1
in seiner vollen Eigenschaftenflex-grow flex-shrink flex-basis
wie "IE10 und IE11 Standardwerte für flex sind 0 0 auto anstatt 0 1 auto, wie der Entwurf spec, ab September 2013"Mit einem für IE Flexbox, aber das Projekt ist no longer being maintained (und als fix hat nicht funktioniert)
ein PostCSS plugin für Webpack verwenden, die eine globale fix versucht
flex: 1 1 0%
width: 100%
auf dem div Anwendung verwenden, Überläuft seine Eltern verursacht die oben geschachtelten Spalten in eine lange Spalte zu verwandeln, also obwohl es teilweise das Überlauf Problem behebt, vereitelt es den Zweck der Flexbox an erster Stelle (da wir so vieledivs
wie möglich in eine Reihe biegen wollen) .
@Michael_B Diese Frage, die meine ist angeblich ein Duplikat von hat 1) Keine akzeptierte Antwort, 2) Die eine Antwort, die veröffentlicht wurde, habe ich gesehen und probiert, von denen, hat nicht funktioniert. Außerdem ist diese Frage spezifischer für "flex-direction: row", die mehr wie "flex-direction: column" in einem übergeordneten Container in IE11 aussieht. Meine Frage ist 'flex-direction: row', die die Breite eines Elterncontainers über IE11 überschreitet. – Xenyal
Ob eine Frage eine akzeptierte Antwort hat oder nicht, ist irrelevant. Viele Fragen mit nützlichen Antworten haben keine akzeptiert (Beispiel [** hier **] (http://stackoverflow.com/q/34352140/3597276) und [** hier **] (http://stackoverflow.com/a/33856609/3597276)). Das Klicken auf das Häkchen ist optional und wird oft ignoriert. Zu deinem zweiten Punkt habe ich deinen Beitrag wieder geöffnet. –
@Michael_B Guter Punkt und danke für die Wiedereröffnung. Ich aktualisiere die Frage selbst mit Dingen, die ich versucht habe (und Links zu ähnlichen Antworten), so dass doppelte Antworten vermieden werden können. – Xenyal