2015-05-01 8 views
36

Auf der Homepage von http://www.shopifyexperte.de/ befinden sich zwei Flex-Box Module, eins unter "Kundenstimmen" und eins unter "Neueste Beiträge ...". Die inneren Kästen sollen umhüllen, wenn sie unter 220px gehen und nicht über 30% Breite wachsen. Dies funktioniert in den neuesten Versionen von Chrome, FF und Opera (alle auf dem Mac), aber in Safari 8.0.5 (Mac) und jedem iOS-Browser bilden die Boxen keine Zeile, selbst wenn genug Platz ist. Sie wickeln sich immer, jeder für sich.Flex-Wrap funktioniert nicht wie erwartet in Safari

Die CSS für den Container:

.homepage-testimonial-container { 
 
\t display: flex; 
 
\t display: -webkit-flex; 
 
\t -webkit-flex: 1; 
 
\t flex: 1; 
 
\t -webkit-flex-direction: row; 
 
\t flex-direction: row; 
 
\t -webkit-flex-wrap: wrap; 
 
\t flex-wrap: wrap; 
 
\t -webkit-justify-content: space-between; 
 
\t justify-content: space-between; 
 
\t -webkit-align-items: flex-start; 
 
\t align-items: flex-start; 
 
\t margin-top: 1em; 
 
}

Die CSS für die Boxen im Inneren des Behälters:

.homepage-testimonial { 
 
\t margin-bottom: 1em; 
 
\t min-width: 220px; 
 
\t max-width: 30%; 
 
\t -webkit-flex: 1 1 auto; 
 
\t flex: 1 1 auto; 
 
}

Wenn ich d iseable -webkit-flex-wrap (setzt es effektiv auf nowrap), alle Felder reihen sich in einer Reihe auf, überlaufen aber den Container, wenn das Browserfenster zu eng wird.

Ist das eine Art Bug in Safari/Webkit oder mache ich hier etwas falsch?

Antwort

29

Es scheint, dass dies ein Fehler in Safari ist. In einer separaten Ausgabe testete ich die minimale Breite anstelle von in Zeilen, in denen Sie etwas wie -webkit-flex: 1 1 auto; sagen.

Diese Frage hat einige Infos: https://stackoverflow.com/a/30792851/756329

+0

Der Fehler scheint [erst vor ein paar Tagen geschlossen] werden (https://bugs.webkit.org/show_bug.cgi?id=136041), so können wir ein Update in der nächsten Version erwarten von Safari. –

+4

@JoepMeindertsma - es ist nicht sehr wichtig, da Sie immer noch +2 Jahre alte Browser-Versionen unterstützen müssen. – vsync

27

Set Kind-Elemente wie das für mich flex-basis: 20em

flex: 1 0 auto; 
+0

Dies liegt wahrscheinlich daran, dass die letzten Updates von Safari es endlich funktionieren lassen. –

+0

Yeah, Safari 9 hat ziemlich viel Flexbox funktioniert genauso wie Chrom. Aber das war nicht der Fall mit 8. – Dave

+0

'flex: 1;' funktioniert auf iOS 10.3.2, aber nicht 10.2.2 – vanduc1102

7

Einstellung scheint zu funktionieren funktioniert auch, min-width: 20em nicht.

2

Dies ist in der Tat ein Safari-Bug. Die Details sind im ausgezeichneten flexbugs Seite zur Verfügung, aber es zu zitieren:

Safari verwendet min/max Breite/Höhe Erklärungen für eigentlich die Größe von flex Produkte Rendering, aber es diese Werte ignoriert, wenn Berechnung, wie viele Artikel sollten in einer einzelnen Zeile eines Multi-Line-Flex Containers sein. Stattdessen wird einfach der Flex-Basiswert des Elements oder seine Breite verwendet, wenn die Flex-Basis auf Auto festgelegt ist.

So ist die fix/Abhilfe - wie hier von anderen Antworten vorgeschlagen - ist die flex-basis auf eine explizite Breite zu setzen, anstatt auto.

5

Ich hatte ein ähnliches Problem in Safari (9.1.3) mit dem Bootstrap 3 Grid-System (z. B. Col-Md-4) in Kombination mit Flex. Ich löste es, indem ich margin: 0 -1px; auf den Farbengegenständen und flex-wrap: wrap; auf dem Wrapper einstelle.

3

Ich benutze Safari 11.0.1 und der Fehler bleibt bestehen. Ich benutze Bootstrap 3 kombiniert mit display: flex auf meine .row-Elemente. Ich fügte folgend meinem css hinzu, um die Spaltenelemente anzustreben. Es scheint etwas über die Prozentsätze der Breite in Safari zu geben, die nicht korrekt berücksichtigt werden.

.row [class*=col-]{ 
    margin:0 -.3px; 
} 
+1

Ich habe gerade genau dieses Problem (Safari 11, Bootstrap 3) angetroffen. Wenn ich 'display: flex' und' flex-wrap: wrap' in einer Zeile mit vier Spalten verwende, zeigt Safari nur drei statt vier Spalten pro Zeile an. Die Einstellung der negativen linken/rechten Ränder, wie oben gezeigt, behebt es. – daGUY

Verwandte Themen