La proprietà CSS gap è disponibile per i motori di layout CSS Flexbox e Multi-Column di Chromium.
CSS Gap
gap è relativo al flusso, il che significa che cambia
dinamicamente in base alla direzione del flusso di contenuti. Ad esempio, gap si adatterà automaticamente
ai diversi valori di writing-mode o direction che hai impostato per i tuoi
utenti internazionali. Questo semplifica notevolmente il problema della spaziatura per
l'autore del componente e del CSS. Riduzione ulteriore del codice.
Compatibilità del browser
Utilizzo
gap accetta qualsiasi lunghezza
o percentuale CSS come valore.
.gap-example {
display: grid;
gap: 10px;
gap: 2ch;
gap: 5%;
gap: 1em;
gap: 3vmax;
}
Lo spazio può essere passato con una sola lunghezza, che verrà utilizzata sia per la riga che per la colonna.
.grid { display: grid; gap: 10px; }
.grid { display: grid; row-gap: 10px; column-gap: 10px; }
Lo spazio può essere passato a due lunghezze, che verranno utilizzate per la riga e la colonna.
.grid { display: grid; gap: 10px 5%; }
.grid { display: grid; row-gap: 10px; column-gap: 5%; }
Flexbox gap
Prima che gap fosse in Flexbox, le strategie prevedevano margini negativi, selettori complessi,
:last o selettori di pseudoclassi di tipo :first o altri mezzi per gestire lo spazio
di un insieme di elementi secondari disposti e disposti dinamicamente.
Tentativi precedenti
Di seguito sono riportati alcuni pattern utilizzati per ottenere una spaziatura simile a quella di un'interruzione.
.layout > :not(:last-child) { margin-bottom: 10px; margin-right: 10px; }
Tuttavia, quanto sopra non sostituisce completamente gap e spesso richiede aggiustamenti di @media
o :lang() per tenere conto degli scenari di wrapping, delle modalità di scrittura o della direzione.
L'aggiunta di una o due media query non sembra un problema, ma possono accumularsi e
portare a una logica di layout complessa.
L'autore di cui sopra intendeva in realtà che nessuno degli elementi secondari si toccasse.
The Antidote: gap
.layout {
display: flex;
gap: 10px;
}
Nei primi due esempi (senza Flexbox gap), i figli vengono presi di mira e
viene assegnata la spaziatura rispetto ad altri elementi. Nell'esempio dello spazio tra gli antidoti, il contenitore
possiede la spaziatura. Ogni bambino può alleviare il peso, centralizzando al contempo la proprietà della spaziatura. Semplificare la coerenza. Riordina,
modifica i viewport, rimuovi elementi, aggiungi nuovi elementi e così via e la spaziatura rimane
coerente. Nessun nuovo selettore, nessuna nuova media query, solo spazio.
Aggiornamenti di Chromium DevTools
Con questi aggiornamenti vengono apportate modifiche a Chromium DevTools. Nota come il riquadro Stili
gestisce ora grid-gap e gap 👍
grid-gap che gap, con gap mostrato utilizzato sotto grid-gap per consentire alla cascata di utilizzare la sintassi più recente.DevTools supporta sia grid-gap che gap, perché gap è essenzialmente
un alias delle sintassi precedenti.
Nuovo potenziale di layout
Con Flexbox gap, non offriamo solo comodità. Sblocchiamo layout intrinseci potenti e perfettamente
spaziati. Nel video e nel seguente esempio di codice, Grid
non può ottenere il layout che Flexbox può. La griglia deve avere lo stesso numero di righe e colonne,
anche se sono assegnate intrinsecamente.
Inoltre, nota come la spaziatura tra gli elementi secondari sia dinamica quando vengono disposti in modo intrinseco
in questo modo. Le media query non possono rilevare il wrapping in questo modo per apportare aggiustamenti intelligenti.
Flexbox gap può farlo e lo farà per te in tutte le internazionalizzazioni.
Più colonne gap
Oltre al supporto di Flexbox per la sintassi gap, i layout a più colonne supportano anche la sintassi gap più breve.
article {
column-width: 40ch;
column-gap: 5ch;
gap: 5ch;
}
Piuttosto figo.