Dynamic Product Preview Card

Solution retrospective
This is my solution for the Product Preview Card challenge on Frontend Mentor. I built it using HTML5 and CSS3, combining CSS Grid and Flexbox. The design is somewhat responsive but could use improvement. I would love to get your feedback on both the code structure and the visual design.
Please log in to post a comment
Log in with GitHubCommunity feedback
- @AdrianoEscarabote
Hello Vinayagam K, how are you? I was really pleased with your project, but I’d like to offer some advice that might help:
Use the THE PICTURE TAG that is a shortcut to deal with the multiple images in this challenge. So you can use the
<picture>
tag instead of importing this as an<img>
or using a div withbackground-image
. Use it to place the images and make the change between mobile and desktop, instead of using adiv
orimg
and set the change in the css withdisplay: none
with the tag picture is more practical and easy. Note that for SEO / search engine reasons isn’t a better practice import this product image with CSS since this will make it harder to the image. Manage both images inside the<picture>
tag and use the html to code to set when the images should change setting the devicemax-width
depending of the device desktop + mobile.Check the link for the official documentation for <picture> in W3 SCHOOLS: https://www.w3schools.com/tags/tag_picture.asp
See the example below:
<picture> <source media="(max-width:650px)" srcset="./images/image-product-mobile.jpg"> <img src="./images/image-product-desktop.jpg" alt="Gabrielle Parfum" style="width:auto;"> </picture>
The rest is spot on.
Hope it’s helpful to you. 👍
Marked as helpful - P@ericssonmura
Hi Vinayagam and congratulations on completing this challenge! 👏
I have some suggestions that might help you:
-
Semantic : don't forget to include semantic tags in your html code as for example "header", "main", "section" "footer"... to be really clear about the structure of the code;
-
Use the html <picture> tag for to place the images and make the change between mobile and desktop : it's more convenient and saves you having to use display block/none. For example :
<picture> <source media="(min-width:620px)" srcset="./images/image-product-desktop.jpg"> <img src="./images/image-product-mobile.jpg" alt="illustration of 'Gabrielle' by Chanel" width="686" height="480"> </picture>
See the documentation on W3Schools
Now for the design part :
- For desktops, the component is to big compared to the solution, and must be centered. You can center it both horizontally and vertically using for example Flexbox :
.container { display: flex; flex-direction: column; justify-content: center; align-items: center; }
- The responsive is pretty good but needs to be improved when it comes to small devices layout. There's an excellent free tutorial "Conquering Responsive layouts" - 21 day challenge by Kevin Powell, you can find it here :
Conquering Responsive layouts, by K.P.
Hope that'll be helpful.
Cheers and keep coding ! 😄👍
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