Indentations dans un carrelage avec largeur automatique des blocs en CSS

Supposons que nous ayons un carrelage de quatre blocs par rangée :

css.child {
  width: 25%;
}

Ajoutons à nos blocs des marges en pourcentage horizontalement et verticalement :

css.child {
  margin-right: 1.5%;
  margin-bottom: 1.5%;
}
.child:nth-child(4n) {
  margin-right: 0;
}

Pour l'instant, ce que nous avons fait ne fonctionnera pas correctement, car la largeur totale des blocs et des marges est supérieure à 100%. Pour un fonctionnement correct nous devons retirer à chaque bloc une certaine partie, pour faire de la place pour nos marges. Calculons ces parties.

Dans notre cas, il s'avère qu'il y a quatre blocs, et entre eux trois marges - d'un pourcent et demi chacune. Pour calculer la partie à retirer, il faut diviser la marge totale par le nombre de blocs :

1.5% * 3 / 4 = 1.125

Alors la largeur de chaque bloc sera égale à :

25% - 1.5% * 3 / 4 = 23.875%

Le code suivant en résultera :

css.child {
  width: 23.875%;
  margin-right: 1.5%;
  margin-bottom: 1.5%;
}
.child:nth-child(4n) {
  margin-right: 0;
}

On peut ne pas calculer cette marge nous-mêmes, et déléguer le travail de calcul à la fonction calc :

css.child {
  width: calc(25% - 1.5% * 3 / 4);
  margin-right: 1.5%;
  margin-bottom: 1.5%;
}
.child:nth-child(4n) {
  margin-right: 0;
}

Laissons également la fonction calc calculer la largeur du bloc :

css.child {
  width: calc(100% / 4 - 1.5% * 3 / 4);
  margin-right: 1.5%;
  margin-bottom: 1.5%;
}
.child:nth-child(4n) {
  margin-right: 0;
}
Задание 1

Définissez la largeur des blocs en pourcentages de sorte que le carrelage ait trois blocs par rangée, avec une distance de 3% entre eux.

Задание 2

Définissez la largeur des blocs en pourcentages de sorte que le carrelage ait six blocs par rangée, avec une distance de 0.5% entre eux.

Задание 3

Définissez la largeur des blocs en pourcentages de sorte que le carrelage ait quatre blocs par rangée, avec une distance de 30px entre les blocs.

Задание 4

Définissez la largeur des blocs en pourcentages de sorte que le carrelage ait cinq blocs par rangée, avec une distance de 50px entre les blocs.