Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted about 3 years ago

Product Preview page using HTML and CSS

Nwaburu Emeka Christian•20
@Christone007
A solution to the Product preview card component challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


I found it difficult to have total control over the positioning of my divs. Making it responsive was quite a challenge.

Been a while since i completed any frontend project and i'm really rusty.

I would like to see how someone else solved the challenge

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • Mauro Aguilar•70
    @mauro1998
    Posted about 3 years ago

    Hey Christian, congrats on completing the challenge. Here is a quick suggestion about how to define the dimensions of your container elements thinking on responsiveness and other good practices:

    I noticed that your div.content-card has the following styles:

    .content-card {
        border-radius: 15px;
        position: absolute;
        top: 50%;
        left: 50%;
        margin-right: 50%;
        transform: translate(-50%, -50%);
        width: 35%;
        height: 55%;
        background-color: #fff;
    }
    

    1- Try not to use % for dimensions (widths and heights). If you want this element to be responsive, a better approach could be:

    .content-card {
        width: 100%;
        max-width: 400px; // set a desired max-width in px or even better in em/rem unit
    }
    

    This way even if the screen size is bigger than 400px your element will always have a consistent width of 400px. Otherwise if the screen size is less than 400px it will adapt to the 100% of the space available because the max-width condition won't apply anymore which will make it responsive. This strategy is really easy to implement and you may not even need media queries.

    2- (optional) a good practice would be to separate the positioning styles (centering) from the other styles in a different class. This way you could easily:

    • Control when to center the container (if it was an actual application where you'd like to reuse the card component, it's very likely that you wouldn't want it to be centered by default, so instead you let the consumer center/position it).
    • Reuse this same class to center anything else, not just the card component (it becomes kind of a "util" class). Something like this:
    // this is just another approach for centering stuff using absolute positioning and margin: auto;
    .element-xy-centered {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        margin: auto;
    }
    
    Marked as helpful
  • Michael Obi•70
    @mykexie
    Posted about 3 years ago

    Try getting the structure first..

    • there's a container (main/div)
    • there are 2 DIVs in that container
    • First div is for the image
    • second div is for the details
    • second div has 5 divs : display flex, align items to center and justify content to space between.
    • 4th child of the second div has 2 divs : current price and canceled price, display flex.
    • last child has 2 divs : cart icon and text, display flex
  • faizan•2,420
    @afaiz-space
    Posted about 3 years ago

    Hey @Christone007, congratulation on completing the challenges. I noticed many issues in your project. you use flex property in the project.

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

Oops! 😬

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

Log in with GitHub