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

Huddle landing page with single introductory section with React

react, sass/scss
Kairung Vangmanaw•260
@VangmanawKairung
A solution to the Huddle landing page with a single introductory section 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?

I’m most proud of how I structured the React components and made the code modular and reusable. It made the project much easier to manage and scale. Next time, I would focus more on accessibility, ensuring all elements are properly labeled for screen readers. I would also dedicate more time to optimizing the performance and improving the responsiveness to create a smoother user experience across all devices.

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

One of the main challenges I encountered was figuring out how to use Sass with React. I initially tried to use it directly, but I realized I needed to install the Sass package first. Once I figured that out, I focused on learning how to organize the components effectively. Another challenge was integrating React Icons for the contact section, but by referring to documentation and experimenting, I was able to get it working smoothly.

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

I would appreciate help with improving the responsiveness of the page, especially for smaller screens. While I've made it work, I feel there’s room for better optimization, particularly with the layout and font sizes. Additionally, I’d like advice on how to make the React components even more efficient and how to best manage state across different components in a larger project.

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • P
    Huy Phan•3,430
    @huyphan2210
    Posted 9 months ago

    Hi, @VangmanawKairung

    I checked out your solution and I have some thoughts:

    Media Queries

    I noticed you're using a media query (@media (min-width: 1241px)) for the body. While this works for larger viewports, it might be beneficial to include additional media queries for smaller viewports, such as tablets. This ensures a smoother experience across a wider range of devices.

    Centering the main Element

    You're centering the main element using position: absolute with top, left, and translate. While this is perfectly valid, you’ve applied it only for viewports that are 1241px wide or larger. On smaller viewports, such as mobile devices, the content isn’t centered. To address this, you could adjust the layout for those viewports using the following methods:

    Centering Techniques:

    • Using position: Like you did, but ensure adjustments are made for all relevant screen sizes.
    • Flexbox:
      display: flex;  
      justify-content: center;  
      align-items: center;  
    
    • Grid:
      display: grid;  
      place-items: center;  
    

    Responsive Design Tips

    For better responsiveness, besides media queries, consider leveraging CSS functions like clamp(), min(), max(), and calc(). These, combined with relative units (rem, em, %, vw, vh), can create fluid layouts that adapt well to different screen sizes. While I see you’ve used vw and vh, integrating these alongside properties like min-height or max-width could further enhance flexibility.

    Hope this helps!

    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

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