HTML Academy
Shrinking items proportionally
Flexbox, part 212/28
Back to the list of tasks
  • 1. Flex items and the block model
  • 2. Features of the margin property
  • 3. Alignment and margins
  • 4. The flow direction of the main axis and margins
  • 5. The initial main size of flex item, flex-basis
  • 6. Test: Cubism
  • 7. The item growth factor, flex-grow
  • 8. Growing items proportionally
  • 9. Calculating the total size with flex-grow
  • 10. The item shrinkage factor, flex-shrink
  • 11. Shrinking items proportionally
  • 12. Calculating the total size with flex-shrink
  • 13. flex-shrink and min-width
  • 14. Test: Mastering factors
  • 15. The flex shorthand property
  • 16. Multi-line flex containers and flex-shrink
  • 17. Multi-line flex containers and flex-grow
  • 18. flex-basis: 100% and flex-wrap
  • 19. The heading with description in flexboxes
  • 20. Heading with description, part 2
  • 21. Flexible menu with overflowing content
  • 22. Flexible menu with overflow, part 2
  • 23. Input fields with dynamic width
  • 24. The course card
  • 25. Course card, part 2
  • 26. Course card, part 3
  • 27. So many cards
  • 28. Test: Flexible flows
flex-shrink and min-width
  • Sign up
  • Log in

Loading…
Everything will be ready in few seconds

  • Theory
  • Theory
  • Comments

Calculating the total size with flex-shrink

The mechanism that is used to calculate the sizes of items when there is not enough space in the container is described as follows:

Step 1 Calculate the negative space (NS) in the flex container:

NS = The container width - Total basic sizes of the items

Step 2. Find the total product of the basic sizes (TPBS) of items and use it as their shrinkage factors.

TBPS = (Basic size1 * flex-shrink1) + (Basic size2 * flex-shrink2) + … + (Basic sizen * flex-shrinkn)

Step 3. For each item we calculate the “normative shrinkage factor” (NSF). To obtain this, we multiply the item base size by its shrinkage factor and then divide by the TBPS:

NSF = (Basic size * flex-shrink) / TBPS

Step 4. Shrink the item basic size by the part of the NS that is proportional to the item NSF. We obtain the NS for the calculation from the module, that is, by discarding the minus:

Total size = Basic size - (NSF * NS)

It turns out that the proportion of negative space that the item “absorbs” depends on two factors:

  • The ratio of the item shrinkage factor to the factors for the other items,
  • The ratio of the item basic size to the basic sizes of the other items.

That is why normalizations are present in the formulas. Now try once again to choose the shrinkage factors.

Comments

  • index.html
  • style.css
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Calculating the total size with flex-shrink</title> <link href="course.css" rel="stylesheet"> <link href="style.css" rel="stylesheet"> </head> <body class="world world-flat"> <div class="spot"> <div class="skate no-width racoon-green"></div> <div class="skate no-width racoon-brown"></div> <div class="ruler ruler-green w-50">50px</div> <div class="ruler ruler-brown w-150 l-50">150px</div> <div class="ruler ruler-negative w-200 l-200">−200px</div> </div> </body> </html>
CSS
.spot { display: flex; margin-left: 30px; padding: 10px 0; width: 200px; height: 200px; } .racoon-green { flex-shrink: 0; flex-basis: 100px; } .racoon-brown { flex-shrink: 0; flex-basis: 300px; }

What didn’t you like in this task?

Thanks! We’ll fix everything at once!

The code has changed, click “Refresh” or turn autorun on.

You’ve gone to a different page

Click inside the mini-browser to shift the focus onto this window.

100%
Goalscompleted
0
    1. Assign flex-shrink values to the raccoons so that their width is equal to the width of the bars.

    In this assignment you can only change the values of flex-shrink,

    Cookies ∙ Privacy ∙ License Agreement ∙ About ∙ Contacts ∙ © HTML Academy OÜ, 2019−2025

    VISAMastercard

    Log in

    or

    Forgot your password?

    Sign up

    Sign up

    or
    Log in

    Restore access

    Have you forgotten your password or lost access to your profile? Enter your email connected to your profile and we will send you a link to restore access.

    Forgot to connect your email to the profile? Email us and we’ll help.