Ծալքավորումներ սալիկներում ավտոլայնությամբ բլոկներով CSS-ում

Ենթադրենք, մենք ունենք սալիկներ՝ չորս բլոկով մեկ տողում.

css.child {
  width: 25%;
}

Եկեք ավելացնենք մեր բլոկներին տոկոսային ծալքավորումներ հորիզոնական և ուղղահայաց.

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

Մինչև հիմա, այն, ինչ մենք արել ենք, կաշխատի ոչ ճիշտ, քանի որ բլոկների և ծալքավորումների ընդհանուր լայնությունը գերազանցում է 100%-ը: Ճիշտ աշխատանքի համար մենք պետք է յուրաքանչյուր բլոկից կտրենք որոշակի մաս, որպեսզի տեղ ապահովվի մեր ծալքավորումների համար: Եկեք հաշվարկենք այդ մասերը:

Մեր դեպքում ստացվում է, որ կան չորս բլոկ, իսկ նրանց միջև երեք ծալքավորում՝ յուրաքանչյուրը մեկուկես տոկոս: Հանվող մասը հաշվարկելու համար անհրաժեշտ է ընդհանուր ծալքավորման չափը բաժանել բլոկների քանակի վրա.

1.5% * 3 / 4 = 1.125

Այդ դեպքում յուրաքանչյուր բլոկի լայնությունը կլինի.

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

Ստացվում է հետևյալ կոդը.

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

Կարելի է չհաշվարկել այս ծալքավորումը ինքնուրույն, այլ փոխանցել հաշվարկման աշխատանքը 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;
}

Բլոկի լայնությունը նույնպես թող հաշվարկի 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

Սահմանեք բլոկների լայնությունը տոկոսներով այնպես, որ սալիկներում տողում դառնա երեք բլոկ, իսկ նրանց միջև հեռավորությունը լինի 3%:

Задание 2

Սահմանեք բլոկների լայնությունը տոկոսներով այնպես, որ սալիկներում տողում դառնա վեց բլոկ, իսկ նրանց միջև հեռավորությունը լինի 0.5%:

Задание 3

Սահմանեք բլոկների լայնությունը տոկոսներով այնպես, որ սալիկներում տողում դառնա չորս բլոկ, իսկ բլոկների միջև հեռավորությունը լինի 30px:

Задание 4

Սահմանեք բլոկների լայնությունը տոկոսներով այնպես, որ սալիկներում տողում դառնա հինգ բլոկ, իսկ բլոկների միջև հեռավորությունը լինի 50px: