Tarpai plytelėje su automatinio pločio blokais CSS

Tarkime, kad turime plytelę su keturiais blokais iš eilės:

css.child {
  width: 25%;
}

Suteikime mūsų blokams procentinius tarpus horizontaliai ir vertikaliai:

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

Kol kas tai, ką padarėme, veiks neteisingai, nes bendras blokų plotis ir tarpų plotis viršija 100%. Kad veiktų teisingai, turime nuimti tam tikrą dalį nuo kiekvieno bloko, kad būtų vietos mūsų tarpams. Apskaičiuokime šias dalis.

Mūsų atveju pasirodo, kad blokų yra keturi, o tarp jų yra trys tarpai - po pusantro procento. Norint apskaičiuoti atimamą dalį, reikia bendrą tarpų plotį padalinti iš blokų skaičiaus:

1.5% * 3 / 4 = 1.125

Tada kiekvieno bloko plotis bus lygus:

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

Gausime tokį kodą:

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

Galima neskaičiuoti šio tarpo patiems, o perduoti skaičiavimo darbą calc funkcijai:

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

Bloko plotį taip pat tegu apskaičiuoja funkcija calc:

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

Nustatykite blokų plotį procentais taip, kad plytelėje būtų trys blokai iš eilės, o tarp jų būtų 3% atstumas.

Задание 2

Nustatykite blokų plotį procentais taip, kad plytelėje būtų šeši blokai iš eilės, o tarp jų būtų 0.5% atstumas.

Задание 3

Nustatykite blokų plotį procentais taip, kad plytelėje būtų keturi blokai iš eilės, o tarp blokų būtų 30px atstumas.

Задание 4

Nustatykite blokų plotį procentais taip, kad plytelėje būtų penki blokai iš eilės, o tarp blokų būtų 50px atstumas.