Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted almost 3 years ago

Responsive Intro Section with Dropdown and Nevigation

Sandesh Adhikari•120
@sandeshad100
A solution to the Intro section with dropdown navigation challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


The drop down section is not working properly when the screen size changes, feedback is highly appreciated.

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • Eduardo•910
    @KTrick01
    Posted almost 3 years ago

    Hi! A quick fix for your problem is adding position: relative; to your .listlLevel1 class, thats because your dropdown menu is positioned based on the closest parent that have a position that its not static, hope that it helps!

  • Elaine•11,360
    @elaineleung
    Posted almost 3 years ago

    Hi Sandesh, first off, good job putting this together as this challenge can be a tricky one. About your question, what's happening is that, the dropdown menus have a position:absolute, but the buttons (which they should be positioned to) do not have a position: relative;, and so, what the browser does is it goes up to the parent containers to find one with position: relative, and if there are none, then it uses the body selector. You just need to add position: relative to the .listLevel1 selectors and that should make things more normal. I would also change the dropdown for features to right: 0; for the dropdown for company, I'd change the left to left: 0, and I'd also add width: fit-content as right now the width jumps a bit depending on what is hovered over.

    Hope this helps!

  • Eray•1,410
    @ErayBarslan
    Posted almost 3 years ago

    Hey there, great work on this one! Addition to position issue, when the size gets wider than the breakpoint 1020px while dropdown is still open, header design breaks. That's because .nav visibility is hidden but still displays. It could be fixed by CSS style but I'll show an alternative fix to watch media-query through JS:

      const mediaQuery = window.matchMedia("(min-width: 1020px)");
    
      function checkMediaQuery(e) {
        if (e.matches)
          closeSideNav()
        else {
          showNav()
        }
      }
    
      mediaQuery.addEventListener('change', checkMediaQuery)
    

    Note that, when you change style of elements with JS, it overrides CSS so things might not go as you expect when you take that approach. You can use !important on style for CSS to still persist but now it overrides JS. So safer approach would be to add-remove CSS classes through JS functions or continue with JS for the changed styles. Great work again and happy coding :)

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
Frontend Mentor logo

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

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