Zentrieren Sie flexible Artikel auf der Verpackung

Lesezeit: 3 Minuten

Benutzer-Avatar
Warum also

Ich habe eine Flexbox mit zwei Elementen eingerichtet, die auf einem normalen Bildschirm links und rechts sein sollten.

Wenn der Bildschirm nicht groß genug ist, um beide nebeneinander anzuzeigen, sollte er umbrechen, aber dann sollten sie zentriert und nicht links ausgerichtet sein.

Ich habe verschiedene Lösungen ausprobiert (wie die Verwendung von margin: auto auf den untergeordneten Elementen), aber dadurch wurden sie mehr in der Mitte ausgerichtet, selbst wenn sie sich in derselben Reihe befinden.

Hier ist ein vereinfachtes Beispiel:

.container {
  display: flex;
  align-items: flex-end;
  flex-wrap: wrap;
  justify-content: space-between;
  border: 1px solid black;
  margin-bottom: 25px;
}
.large {
  width: 500px;
}
.small {
  width: 175px;
}
.item {
  width: 100px;
  height: 100px;
  background-color: blue;
  margin: 25px 0px;
}
<div class="container large">
  <div class="item"></div>
  <div class="item"></div>
</div>

<div class="container small">
  <div class="item"></div>
  <div class="item"></div>
</div>

https://jsfiddle.net/SoWhy/zfx4ub8x/

Der erste Container ist die beabsichtigte Positionierung, der zweite Container emuliert denselben Container auf einem kleineren Bildschirm, beachten Sie die Ausrichtung nach links.

Gibt es eine Möglichkeit zu definieren, dass die Flexbox die Elemente beim Umwickeln anders ausrichten soll, oder kann ich dies nur mit der Methode “@media screen” tun (bei der ich eine bestimmte Größe festlegen muss und daher nicht flexibel ist, wenn die Größe der Elemente Änderungen)?

  • Nein, Flexbox kann das nicht … es ist eine häufige Anfrage.

    – Paulie_D

    10. Juli 2016 um 13:18 Uhr

Benutzer-Avatar
Michael Benjamin

Dies funktioniert in Ihrem Fall möglicherweise nicht, aber es lohnt sich, diesen weniger bekannten Unterschied zwischen zu erwähnen justify-content: space-between und justify-content: space-around.

Aus der Flexbox-Spezifikation:

8.2. Achsenausrichtung: die justify-content Eigentum

Das justify-content -Eigenschaft richtet Flex-Elemente entlang der Hauptachse der aktuellen Zeile des Flex-Containers aus.

Es gibt fünf Werte, die zutreffen justify-content. Hier sind zwei davon:

space-between

Flex-Artikel werden gleichmäßig in der Linie verteilt.

Wenn der verbleibende freie Speicherplatz negativ ist oder es nur ein einzelnes Flex-Element in der Zeile gibt, ist dieser Wert identisch mit flex-start.

Dies erklärt, warum Ihre Artikel auf der Verpackung linksbündig ausgerichtet sind space-between.

Nun schau zu space-around:

space-around

Flex-Artikel sind gleichmäßig in der Linie verteilt, mit Zwischenräumen halber Größe an beiden Enden.

Wenn der verbleibende freie Speicherplatz negativ ist oder es nur ein einzelnes Flex-Element in der Zeile gibt, ist dieser Wert identisch mit center.

Ziehen Sie daher die Verwendung von in Betracht, um Flex-Elemente auf der Verpackung zentriert auszurichten space-around.

.container {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around; /* ADJUSTMENT */
  border: 1px solid black;
}
.item {
  width: 200px;
  height: 100px;
  background-color: blue;
  margin: 25px;
}
<div class="container">
    <div class="item"></div>
    <div class="item"></div>
</div>

Überarbeitete Geige

  • Wenn Sie jedoch Leerzeichen verwenden, haben die Elemente an beiden Enden “Leerzeichen in halber Größe” (gemäß der von Ihnen geposteten Erklärung). Ich möchte diese Zwischenräume nicht, ich möchte, dass die Gegenstände so weit wie möglich voneinander entfernt sind, wenn sie nicht verpackt sind.

    – Warum also

    10. Juli 2016 um 16:51 Uhr

  • Die 25px-Ränder waren nur so, dass sie im Beispiel besser zu sehen sind. Sorry für die Verwirrung. In der realen Anwendung wären die Ränder “25px 0px”, also kein Rand links oder rechts

    – Warum also

    10. Juli 2016 um 17:10 Uhr

  • Wenn es einen Hack gibt, der die Arbeit erledigt, bin ich immer offen dafür. 😉

    – Warum also

    10. Juli 2016 um 18:16 Uhr

  • Ja ich verstehe. Der Zweck meiner Antwort war, das Zentriermerkmal von aufzudecken space-aroundfalls es dir oder anderen hilft.

    – Michael Benjamin

    7. Januar 2018 um 19:27 Uhr

1005710cookie-checkZentrieren Sie flexible Artikel auf der Verpackung

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy