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

NFT preview card component solution

Aaron Li 90

@aaronli722

Desktop design screenshot for the NFT preview card component coding challenge

This is a solution for...

  • HTML
  • CSS
1newbie
View challenge

Design comparison


SolutionDesign

Solution retrospective


In this challenge, I learned:

  • Centering a svg element in a div box
  • overlaying color on an image
  • Creating a reposive square div box

The most challenging part is the Card Image with a view-icon with color ovarlay when hovering. In the first try, I divided it into three component: a div box, an image and a svg icon, but then I found it difficult to correctly center the icon on the image.

After studying different resources on the web, I simplified it: a div box with background-image and an svg icon. To easily center the svg icon on the image, I set the position of the div box to relative and the svg icon to absolute so the svg icon is positioned relative to its parent: the div box.

parent-div { position: relative; } child svg { position: absolute; }

The Card Image acted as the background image of the div box and so the div box needed to be responsive square to fit the image. I learned the use of padding-top to make it responsive square:

image-box { width: 100%; padding-top: 100%; }

As the svg icon was absolute positioned, it was not affected by the padding and can be easily centered:

svg-icon { left: 50%; top: 50%; transform: translate(-50%, -50%); }

Final Challenge was overlaying color on background image when hovering. After research, I learned that it can be done by linear-gradient with two same color-stop, which means no graident at all:

image-box:hover { background: linear-gradient(color1, color1), backgraound-image; }

All DONE!

I am new to HTML and CSS. I started learning from freecodecamp and w3school few months ago. I am not sure if the above solution is the best solution and it would be great if you may have a better suggestion.

Community feedback

akhademik 420

@akhademik

Posted

what i've done: div: => image div::before => overlay (Color + opacity applied) div::after => icon

before and after display -> none before and after hover display -> show

Marked as helpful

0

Aaron Li 90

@aaronli722

Posted

@akhademik Thanks! I didn't learn ::before and ::after. Let me study it :)

0
akhademik 420

@akhademik

Posted

@luenlun yup. Check it out. And you can make use of it quite alots :)

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