# 132: Szybki użyteczny przypadek dla Sass Math i Mixins - CSS-Tricks

Anonim

Miałem małą sytuację projektową, w której robiłem płynną siatkę pudełek z pływakami. Chciałem bardzo łatwo określić, ile pudełek w rzędzie było bardzo łatwo, i ustawić je równo z obiema krawędziami pojemnika. Nie jest to zbyt trudne, jak wiemy, nie przemyślając kratek i używając odpowiedniego rozmiaru pudełka, można uzyskać cztery pływające pudełka w rzędzie o szerokości 25% - łatwo.

Ale co, jeśli chcesz użyć marginesu między polami? Wciąż jest to całkowicie możliwe, wymaga tylko trochę przemyśleń. Powiedzmy, że chcesz cztery z rzędu, musisz dowiedzieć się, ile miejsca pozostało po wykorzystaniu całego marginesu. Ponieważ nie chcesz marginesu na ostatnim w rzędzie, to 3 marginesy:

100% - (3 * MARGIN)

3 to naprawdę „żądane wiersze minus jeden”, więc:

100% - ((ROWS - 1) * MARGIN)

Następnie dzielisz pozostawioną przestrzeń przez liczbę pól, które chcesz na tym, więc:

(100% - ((ROWS - 1) * MARGIN)) / ROWS

Możesz do tego użyć Sassa:

$numPerRow: 4; $margin: 2%; width: ((100% - (($numPerRow - 1) * $margin)) / $numPerRow);

Jeszcze lepiej, robimy to w @mixin, więc możemy po prostu nazwać to, kiedy tego potrzebujemy:

@mixin rowMachine($numPerRow, $margin) ( width: ((100% - (($numPerRow - 1) * $margin)) / $numPerRow); &:nth-child(n) ( margin-bottom: $margin; margin-right: $margin; ) &:nth-child(#($numPerRow)n) ( margin-right: 0; margin-bottom: 0; ) )

Obejrzyj wideo, aby dowiedzieć się o tym trudnym fragmencie z: nth-child

W filmie, kawałek na początku z pętlą Jade, możesz dowiedzieć się więcej tutaj.

A oto pióro:

Zobacz Prostą technikę pióra dotyczącą używania Sass dla wierszy autorstwa Chrisa Coyiera (@chriscoyier) w CodePen.