Lățimea diferită a elementelor și compresibilitatea blocurilor flex în CSS

Să presupunem acum că elementele noastre au lățimi diferite. În acest caz, porțiunea detașată va fi proporțională cu lățimea acelui element și va fi calculată conform următoarei formule: spațiu liber negativ * (lățimea elementului / suma tuturor lățimilor elementelor).

Să presupunem că avem 4 elemente. Să presupunem că lățimea primului element este 400px, lățimea elementelor rămase - 200px, iar lățimea părintelui 900px.

Lățimea totală a elementelor este:

400px + 3 * 200px = 1000px

Atunci spațiul liber negativ va fi egal cu:

1000px - 900px = 100px

Să aflăm cât se va detașa de la primul element:

100px * (400px / 1000px) = 40px

Adică lățimea sa va fi egală cu:

400px - 40px = 360px

Să aflăm cât se va detașa de la fiecare dintre celelalte elemente:

100px * (200px / 1000px) = 20px

Adică lățimea acestor elemente va fi egală cu:

200px - 20px = 180px
Задание 1

Implementați blocurile descrise și verificați prin măsurare, că lățimea elementelor va fi într-adevăr egală cu cea calculată de noi.

Задание 2

Calculați lățimea blocurilor, apoi verificați calculele prin măsurare:

html<div class="parent">
  <div class="child elem1">1</div>
  <div class="child elem2">2</div>
  <div class="child elem3">3</div>
</div>
css.parent {
  display: flex;
  width: 300px;
  height: 200px;
  border: 1px solid red;
}
.child {
  height: 50px;
  border: 1px solid green;
}
.elem1 {
  width: 300px;
}
.elem2 {
  width: 100px;
}
.elem3 {
  width: 100px;
}