Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found

Submitted

Product Preview Card Component using basic CSS

Fritz 300

@fritzadelbertus

Desktop design screenshot for the Product preview card component coding challenge

This is a solution for...

  • HTML
  • CSS
1newbie
View challenge

Design comparison


SolutionDesign

Solution retrospective


Currently I'm using CSS background property to change the source of the image accordingly. Is there a better way of doing it? Is it better to put supporting icons as an element beside the text or using pseudo css selectors. I'm currently using the ::before to insert the cart icon and wanting to know if that is the optimal solution?

Community feedback

Lucas 👾 104,420

@correlucas

Posted

👾Hello @fritzadelbertus, Congratulations on completing this challenge!

Your solution its almost done and I’ve some tips to help you to improve it:

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 with background-image. Use it to place the images and make the change between mobile and desktop, instead of using a div or img and set the change in the css with display: 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 device max-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>

👨‍💻Here's my solution for this challenge if you wants to see how I build it: https://www.frontendmentor.io/solutions/product-preview-card-vanilla-css-and-custom-hover-state-on-hero-dVGWpOTgWS

✌️ I hope this helps you and happy coding!

Marked as helpful

0

Fritz 300

@fritzadelbertus

Posted

@correlucas Thank you for the explanation on using <picture>! I rarely read documentation and after reading your explanation I think its time to start getting used to reading documentation.

0

@mbonamensa

Posted

Hey Fritz, Congrats on completing the challenge!

There is no optimal solution, I think you did a great job!

For the different images for different screen sizes, it is advisable to use <picture> since the images are an important aspect of the site.

For example:

<picture> <source media="(max-width: 375px)" srcset="./img/image-product-mobile.jpg"> <img src="./img/image-product-desktop.jpg" alt="Perfume with green leaf props"> </picture>

This resource can help you understand better.

I also think the icons should be placed as images or svgs as well in the HTML, instead of using the pseudo-class selector.

I hope this helps.

Happy coding!

Marked as helpful

0

Fritz 300

@fritzadelbertus

Posted

@mbonamensa Thank you for the insight! I'll try using the <picture> for future/next projects

0

@rachelktyjohnson

Posted

Hey Fritz! I also used the background property to change the source of the image according to the screen size. I tend to favor this method when an image's dimensions can change. I personally inputted the SVG into the button so I could align it + text better.

1

Fritz 300

@fritzadelbertus

Posted

@rachelktyjohnson I see... thank you for the comment! I guess that's the best solution so far..

0

Please log in to post a comment

Log in with GitHub
Discord logo

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