Warum flexbox-Element-Bilder skalieren unterschiedlich in Abhängigkeit von Ihrer anfänglichen Größe?

Habe ich vier Bilder: zwei kleine, zwei große (Maße in html angezeigt). Sie alle haben Ihre img width auf 100% eingestellt, aber Ihre Eltern-div ist festgelegt auf eine bestimmte Breite. Wenn ich die Größe des browser-Fensters die kleineren Bilder verkleinern und die größeren nicht, sofort.

Habe ich einen roten Rahmen um die divs und grünen Rahmen um die imgs. Die kleineren Bilder, die' grünen Grenze schrumpfen, bevor Sie größere. Warum ist das so?

http://jsfiddle.net/brcrnj80/6/

img {
  border: 3px solid green;
  width: 100%;
}

.item {
  border: 1px solid red;
  max-width: 250px;
  min-width: 60px;
  margin: 10px;
}

Dank

  • ich brauche eine Klarstellung. Meinst du, warum tun Sie überschreiten die Grenze der flex-container? oder warum tun Sie schrumpfen auf das minimum zu unterschiedlichen Preisen? Weil der Blick auf Ihre Geige (in Chrome) Sie alle Größe, in der gleichen Zeit, auch wenn ich die Geige und das größte Bild ist noch ausfüllen, Sie alle Größe zur gleichen Zeit. Die kleineren Bilder, die scheinen, zu erhalten, zu min-width ersten, aber das kann nur eine Wahrnehmung-Problem auf meiner Seite, da die Bilder nähern sich der Wert min.
  • Darauf hinzuweisen, dass es einen webkit-bug (alle safari-Versionen, bei denen die flexbox wird unterstützt, mobile eingeschlossen), die verhindert, dass ein flex-container von wrapping flex-Elemente, wenn Sie Begegnung ein flex-Element min-width (bugs.webkit.org/show_bug.cgi?id=136041). Es ist ein ziemlich fiesen bug und macht versuchen, zu verwenden flexbox mit min-width flex-Elemente praktisch nutzlos (aufgrund der allgegenwärtigen Natur safari auf mobilen Geräten).
  • FF zumindest) Die Blume nicht beginnen, um die Größe ändern, bis die Pilze ziemlich klein. Ist dies nicht der Fall, in chrome (kein Zugriff auf chrome im moment)
  • ok - auf dieser Basis würde ich sagen, es ist ein rendering-Problem des FF - wie @Adam schlägt vor, möchten Sie vielleicht, um sicherzustellen, dass Ihre css-beinhaltet all die verschiedenen Geschmacksrichtungen der flex-Definitionen. Siehe A Guide to flexbox über bei CSS-Tricks an der Unterseite, siehe Abschnitt Voranstellen FlexBox
  • Ich habe keine IE11 handy um es zu testen, fand ich aber erwähnen, online, IE11 mit noch größeren Problemen bei der Verwendung von max-width auf flex-Elemente.
  • leider, die min-width-bug ist nicht im Zusammenhang mit, einschließlich aller Varianten von flex-Definitionen (von denen gibt es viele), dies ist eine regelrechte rendering-bug (das wurde nicht einmal bestätigen, um mein wissen?) im Safari.
  • Ich bin damit einverstanden. Aber vielleicht sollte ich das gemacht haben, ist dieser mehr klar. Wenn Sie einen Fall haben, wo ein bestimmter browser hat weniger als gewünscht Verhalten, das beste, was Sie tun können, ist bieten fallback für so viele browser "kits" wie möglich. Nach, dass, wenn es keine andere programmatische Lösungen, du lebst mit dem Ergebnis oder ändern Sie Browser.
  • die Arbeit ist nur ein Medien-Abfrage, um die Größe, dass die flex-items geschlagen hätten, Ihre min-width und ändern Sie den layout-Regeln (in der Regel entweder durch eine re-Definition der CSS-flex-oder width-Eigenschaft des flex-Element.
  • ok, aber nicht die zugrunde liegende Problem des OP, das ist eine falsche Darstellung von unterschiedlichen Browsern mit dem gleichen Bildschirm-Dimensionen. Mit media queries um Funktionen zu entfernen, zu beheben ein rendering-bug ist nicht wirklich viel für eine Lösung, und es ist nicht das, was media queries bestimmt waren, zu behandeln. Aber hey, wenn es funktioniert... ich bin alle für es.
  • Ich habe nicht versucht, die zugrunde liegenden Problem (zumindest in den Kommentaren, aber ich habe eine Antwort, die funktioniert, unten). Alles was ich sagte, ist, dass sollten Sie nicht verwenden min-width auf flex-Elemente in den aktuellen Stand der Dinge wegen den schlechten support, dass alle safari-Versionen haben für diesen Umstand.
  • Die Firefox vs. Chrome Problem oben diskutiert (z.B. im 3./4. Kommentar hier, zwischen James & fnostro) ist eigentlich ein Chrome-bug-Sie sind falsch lassen max-width Einfluss der gelöst-Wert von flex-basis:auto. (Sie sind die Anwendung max-width zu früh in den flex-layout-Algorithmus, im Grunde.) Ich bin der Planung über die Einreichung einer detaillierte Fehler später heute Abend, und ich werde die bug-Nummer hier zur Referenz.
  • Tatsächlich, erkannte ich, dass der Firefox vs. Chrome-Problem ist ein Fall von etwas, underspecified (mit der Skillung ändern von pretty-speziell fordert, dass der Firefox Verhalten, weniger spezifische, im Laufe der Zeit). Also, anstatt die Einreichung einer Chrome/Blink-bug, ich fragte, die CSS-Arbeitsgruppe zu klären: lists.w3.org/Archives/Public/www-style/2015Feb/0377.html

InformationsquelleAutor tazboy | 2015-02-17
Schreibe einen Kommentar