Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted over 1 year ago

Responsive 3-Column Preview Card built with HTML & CSS

Rafael•50
@rafaelgonzales612
A solution to the 3-column preview card component challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


Hi all!

Just a quick question: is it okay for me to have this many classes for a challenge like this? Or is there a more efficient way?

For instance, is there a way to write less code to change each background-color of the card-containers and the background-color and text-color of the card-buttons?

Thanks!

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • Bruce B•485
    @bbsmoothdev
    Posted over 1 year ago

    Hey, overall this is great. It looks exactly like the original.

    I agree, the image icons should have alt="" to hide them from screen reader users because they are purely decorative. Your heading structure looks good now (i.e. each type of car is an h2). Yes, you should switch to single column a little sooner. And I'm still seeing a card get taller than the others as I zoom in.

    A few accessibility issues:

    • The white text on orange background does not have enough contrast to meet minimum accessibility requirements. I understand if those are the colors the design asked for. I won't hold that against you. The designer is the one to blame. Just wanted to let you know that it wouldn't pass an accessibility audit.
    • Believe it or not, the white on lighter green in the middle card does not quite have enough contrast either. It's missing by a little, so it's a minor issue. Again, I won't hold that against you.
    • The "Learn More" links at the bottom are a common accessibility issue. A screen reader user can navigate by links only. In that case they will hear just "link Learn More" and won't know which car the link is for without having to do some extra work to figure it out. The best solution for this is to use visually hidden text to add the type of car after "Learn More" for each link:
    <button class="card-button">Learn More <span class="visually-hidden">about Sedans</span></button>
    

    The article The anatomy of visually-hidden has all the info you need on how to visually hide text using the visually-hidden class.

    Marked as helpful
  • Marcos Travaglini•6,210
    @Blackpachamame
    Posted over 1 year ago

    Greetings! you have done a great job 😎

    📌 Some accessibility and semantics recommendations for your HTML

    • I can only mention an accessibility issue, you can add a short description to your image with the alt attribute. In case it is just a decorative image, such as an icon or logo, you can leave it empty: alt="". More info
    • Just because it looks bigger does not mean that this text is your main title
    • There can only be one h1 per page

    📌 Some suggestions

    • I'm not convinced that you have defined the media query at 375px, I think it should be a little higher, this would prevent it from looking bad on screens between 376px and 1050px
    • Also, you could have placed display: flex directly in the mobile version with a flex-direction: column, then just changed to flex-direction: row. You can also play around with flex-wrap: wrap although here you would have to make extra adjustments

    As for your question, I'm afraid not, at least for this case I can't think of a way to make each section have a different color without applying a different class to each one.

    Marked as helpful

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
Frontend Mentor logo

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