Flexbox-ähnliches „einfach Elemente in eine Reihe stellen“ mit CSS Grid

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Es fiel mir auf, als wir über Flexbox und gap sprachen, dass ein Grund, warum wir manchmal zu Flexbox greifen, darin besteht, einige Boxen nebeneinander zu legen und sie etwas zu verteilen.

Mein Gehirn greift in dieser Situation immer noch zu Flexbox, und mit gap wird es das wahrscheinlich auch weiterhin tun. Es ist jedoch erwähnenswert, dass Grid dasselbe auf seine eigene besondere Weise tun kann.

So wie das

.grid {
  display: grid;
  gap: 1rem;
  grid-auto-flow: column;
}

Sie sehen dort alle gleich breit aus, aber das liegt nur daran, dass sich kein Inhalt darin befindet. Mit Inhalt werden Sie sehen, dass sich die Boxen aufgrund der natürlichen Breite dieses Inhalts gegenseitig verdrängen. Wenn Sie etwas Kontrolle ausüben müssen, können Sie jederzeit width / min-width / max-width für die Elemente festlegen, die in diese Spalten fallen – oder sie mit grid-template-columns festlegen, aber ohne die tatsächliche Anzahl der Spalten festzulegen, und dann min-content die Breite bestimmen lassen.

.grid {
  display: grid;
  gap: 1rem;
  grid-auto-flow: column;
  grid-template-columns: repeat(auto-fit, minmax(min-content, 1fr));
}

Flexible Grids sind das Coolste.

Ein weiterer Gedanke… wenn das gesamte Grid selbst nur so breit sein soll wie der Inhalt (d.h. weniger als 100% oder nach Bedarf auto), dann beachten Sie, dass display: inline-grid; existiert.