HTML Academy
Course card, part 2
Flexbox, part 226/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
So many cards
  • Sign up
  • Log in

Loading…
Everything will be ready in few seconds

  • Theory
  • Theory
  • Comments

Course card, part 3

The cards are lined up in a single row, and now they are all the same height. This happened because their parent item is a flex container with stretch cross alignment.

Now let’s design the “Complete course” buttons so that they are aligned with the bottom edge of the card. To do this:

  • Assign a positive growth factor to the .card-content block so that it occupies all of the available space in the card.
  • Convert the .card-content block into a flex container with the main axis oriented from top to bottom.
  • Configure the button to have an automatic top indent so that it presses up against the end of the main axis of the .card-content block.

Remember how we created cards using flex containers during the first step? Without these containers, it would be impossible for us to the stretch the height of the nested blocks using flex-grow.

Comments

  • index.html
  • style.css
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Course card, part 3</title> <link href="course.css" rel="stylesheet"> <link href="style.css" rel="stylesheet"> </head> <body class="subtle"> <section class="cards"> <article class="card"> <h1 class="card-heading">2D-transformations</h1> <div class="card-meta"> <div class="card-category"> <span class="card-icon icon-tag">Category: </span> <span>HTML, CSS</span> </div> <div class="card-duration"> <span class="card-icon icon-time">Course time: </span> <span>2 hours</span> </div> </div> <div class="card-content"> <figure class="card-figure"> <img class="card-img" src="img/course-2.png" alt="Muffin"> <figcaption> <p>We will learn how to rotate, tilt, move, shrink, and magnify objects, and we will even learn how to blow them up with fireballs.</p> </figcaption> </figure> <button class="card-button">Start course</button> </div> </article> <article class="card"> <h1 class="card-heading">Animation</h1> <div class="card-meta"> <div class="card-category"> <span class="card-icon icon-tag">Category: </span> <span>HTML, CSS</span> </div> <div class="card-duration"> <span class="card-icon icon-time">Course time: </span> <span>2 hours</span> </div> </div> <div class="card-content"> <figure class="card-figure"> <img class="card-img" src="img/course-4.png" alt="Muffin"> <figcaption> <p>The course covers the basics of CSS animation.</p> </figcaption> </figure> <button class="card-button">Start course</button> </div> </article> </section> </body> </html>
CSS
.cards { display: flex; } .card { display: flex; flex-direction: column; margin: 10px; padding: 20px; max-width: 70%; } .card-meta { display: flex; } .card-category { flex-grow: 1; } .card-content { } .card-img { width: 100%; } .card-button { } /* Decorative outlines */ .card > * { outline: 2px solid rgba(0, 128, 0, 0.3); outline-offset: 1px; } .card-content > * { outline: 2px solid rgba(0, 0, 0, 0.5); outline-offset: -3px; }

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 a growth factor of 1 for .card-content,
    2. then configure it to use a flexbox layout,
    3. and set the direction of flow of the main axis to from top to bottom.
    4. And set a top margin of auto for the .card-button button.

    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.