Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted 9 months ago

Article Preview Component

tris6•170
@tris6
A solution to the Article preview component challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


What are you most proud of, and what would you do differently next time?

Really enjoyed this exercise's problem-solving. Surprisingly, I found the JS relatively simple compared to several CSS points I got stuck on. The elegant layout hides some tricky selection challenges that took some Googling and trial-and-error.

The share icon caused me to learn how to change a child based on hovering a parent. Like everything, easy when you know how.

I was also very proud of my lateral problem-solving when I found the pop-up share bar wasn't translating well in portrait view. Instead of obsessing over local properties, I took a step more global, to realize I set the bar as a child of the share icon, rather than child of the card's footer. I would normally spend an hour driving myself crazy in the local div, but was proud to think literally 'outside the box' to find the cause. Not long ago, this would have taken me an hour, now it took me 5-10 minutes.

What challenges did you encounter, and how did you overcome them?

My image sizing and cropping is still very awkward. I'm never sure whether to work with the image itself or make it relative to container. The Every Layout intrinsic sizing properties helped me out a lot with the cropping.

The share bar shape was a really fun problem-solving exercise. I tried to draw the shape in polygon but couldn't navigate the rounded corners. Eventually I decided to make it a composite of two divs: one rounded box, and one polygon triangle, joined together using absolute positioning. It did feel very hacky fine-tuning the pixel perfection, but happy with the result.

What specific areas of your project would you like help with?

I'm still very unsure how best to handle SVGs in a modular way. I wanted to keep the icons in external files, and tried a few src and object properties to embed them, but could not get CSS to modify the embed. I eventually gave up: copy-and-pasted SVG paths straight into the HTML, and select svg from there.

Looking at Stack Overflow, it seems like many are struggling with the same issue. There seems to be a lack of established best practice for modular SVG work without long-winded JS work-arounds. So, not really sure.

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • Anh•60
    @anhnguyn
    Posted 9 months ago

    Wow, I enjoy reading your progress log here! I did the same challenge yesterday, and gotta say I wish my HTML were as clean as yours :)

    • For the arrow, you can look up pseudo elements in CSS and create it with :after.
    • For the SVG, I actually use SVG sprites. I don't think it's the best way, but the syntax is cleaner and the performance is better than copying and paste SVG directly into the HTML.

    Hope we can share some feedback about this challenge!

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