Различна ширина на елементи и свиваемост на флекс блокове в CSS
Нека сега нашите елементи имат различна ширина. В този случай откъснатото парченце ще бъде пропорционално на ширината на този елемент и ще се изчислява по следната формула: отриц. свободно пространство * (ширина на елемента / сума от всички ширини на елементите).
Нека имаме 4 елемента. Нека
ширината на първия елемент е 400px,
ширината на останалите елементи - 200px,
а ширината на родителя 900px.
Общата ширина на елементите е:
400px + 3 * 200px = 1000px
Тогава отрицателното свободно пространство ще бъде равно на:
1000px - 900px = 100px
Нека намерим колко ще се отреже от първия елемент:
100px * (400px / 1000px) = 40px
Тоест неговата ширина ще бъде:
400px - 40px = 360px
Нека намерим колко от всеки от останалите елементи:
100px * (200px / 1000px) = 20px
Тоест ширината на тези елементи ще бъде:
200px - 20px = 180px
Реализирайте описаните блокове и проверете чрез измерване, че ширината на елементите наистина ще бъде равна на изчислената от нас.
Изчислете ширината на блоковете и след това проверете изчисленията чрез измерване:
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
<div class="child elem3">3</div>
</div>
.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;
}