Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted 26 days ago

Responsive Blog Card with Flexbox layout and media query scaling

Umam•20
@umam-z
A solution to the Blog preview card challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


What are you most proud of, and what would you do differently next time?

I'm most proud of how clean, semantically structured, and responsive my layout turned out. I implemented a mobile-first approach using relative units (rem, %) combined with Flexbox for layout alignment and spacing. I also utilized CSS custom properties (--var) to manage consistent font sizes, colors, and spacing throughout the design. It felt great to see the card maintain its structure and readability across screen sizes.

If I were to do this again, I would round my media query breakpoints to more common values (like 420px instead of 417.431px) for better readability and maintainability. I’d also consider improving accessibility, such as adding more descriptive alt text and implementing keyboard focus states for interactive elements like the title link.

What challenges did you encounter, and how did you overcome them?

One challenge I faced was getting the spacing and alignment right between the image, content section, and author block. The design looked slightly off when I used fixed units early on, especially when resizing the viewport. I overcame this by switching to relative units and ensuring that spacing was handled using scalable properties like margin-bottom, gap, and padding in rem.

Another small challenge was ensuring that the hover effect on the title looked subtle yet noticeable. I added a hover state that changes the title color and applied a transition for a smoother effect. I also struggled a bit with how to scale the font sizes across breakpoints, but defining both mobile and desktop values in :root made it easier to manage via media queries.

What specific areas of your project would you like help with?

I'd really appreciate feedback on the way I structured the card layout with Flexbox and relative units. Are there cleaner or more scalable approaches I could take, especially regarding spacing and responsiveness?

I'd also love to know if there's a better practice for managing font size transitions across breakpoints using custom properties. Lastly, if there are any improvements I can make in terms of accessibility (semantic HTML, alt text, keyboard navigation), I’m open to all suggestions.

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • Marzia Jalili•9,670
    @MarziaJalili
    Posted 26 days ago

    Welcome to the empire of cool! 🎉🥳🎉

    🌟 A tiny tip on a11y to consider in your next masterpieces:

    ✅ The <div> element should be our last choice while writing the setup as it doesn't carry any semantic meaning, man.

    ✅ In this project, you can:

    1️⃣ Swap the <div class="card"> for the <article> element to represent some standalone content.

    2️⃣ The <div class="authorization"> for the <footer> element.

    Great work overall — keep on conquering! 💪😎

    Marked as helpful
  • Umam•20
    @umam-z
    Posted 25 days ago

    Hi! Thank you so much for the helpful feedback — I really appreciate it. 🙌

    I’ve reviewed the issues you pointed out and made the necessary adjustments to improve both accessibility and code quality. Your insights helped me a lot in refining the project. If there’s anything else I can improve, feel free to let me know. Thanks again!

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

How does the accessibility report work?

When a solution is submitted, we use axe-core to run an automated audit of your code.

This picks out common accessibility issues like not using semantic HTML and not having proper heading hierarchies, among others.

This automated audit is fairly surface level, so we encourage to you review the project and code in more detail with accessibility best practices in mind.

How does the CSS report work?

When a solution is submitted, we use stylelint to run an automated check on the CSS code.

We've added some of our own linting rules based on recommended best practices. These rules are prefixed with frontend-mentor/ which you'll see at the top of each issue in the report.

The report will audit all CSS, SCSS and Less files in your repository.

How does the HTML validation report work?

When a solution is submitted, we use html-validate to run an automated check on the HTML code.

The report picks out common HTML issues such as not using headings within section elements and incorrect nesting of elements, among others.

Note that the report can pick up “invalid” attributes, which some frameworks automatically add to the HTML. These attributes are crucial for how the frameworks function, although they’re technically not valid HTML. As such, some projects can show up with many HTML validation errors, which are benign and are a necessary part of the framework.

How does the JavaScript validation report work?

When a solution is submitted, we use eslint to run an automated check on the JavaScript code.

The report picks out common JavaScript issues such as not using semicolons and using var instead of let or const, among others.

The report will audit all JS and JSX files in your repository. We currently do not support Typescript or other frontend frameworks.

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub