0

I'm encountering an issue on my HTML page where the main content is overlapping the header element, causing visual overlap and content obstruction. Despite my attempts to address the problem using the position and z-index properties in both my CSS and HTML files, I haven't been able to resolve the issue.

I need assistance in finding a solution to prevent the main content from overlapping the header element. How can I ensure that the main content displays correctly without overlapping the header? I'm open to any suggestions, insights, or alternative approaches to tackle this problem.

I was expecting that by using the position property with appropriate values (such as relative, absolute, or fixed) and assigning a higher z-index value to the header element compared to the main content, the header would remain visually above the main content, effectively preventing any overlap.

Unfortunately, despite implementing these techniques, the main content still overlaps the header element. I am seeking guidance and alternative solutions to ensure that the header and main content display properly without any visual overlap.

.top_header {
  position: fixed;
  width: 100%;
  top: 0;
  left: 0;
  box-shadow: 0 1px 4px var(--shadow-color);
  z-index: var(--z-fixed);
}

/* Nav */
.nav {
  height: var(--nav-height);
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: var(--font-bold);
  margin: 0 1.5rem;
}

@media screen and (max-width: 768px) {
  .nav_menu {
    position: fixed;
    top: var(--nav-height);
    width: 80%;
    height: 100%;
    background-color: var(--dark-color);
    padding: 2rem;
    right: -100%;
    transition: right .2s;
  }

  .show {
    right: 0;
  }
}

.nav_toggle {
  font-size: 2rem;
  color: var(--dark-color);
}

.nav_link {
  color: white;
  letter-spacing: 1px;
  position: relative;
}

.link_item {
  margin-bottom: var(--mg-4);
}

.nav_link:hover::after, .active::after {
  position: absolute;
  content: "";
  background-color: var(--light-color);
  width: 100%;
  height: 0.23rem;
  left: 0;
  margin-top: 1.3rem;
  border-radius: 2rem;
}

.nav_logo {
  width: 5rem;
}
<header class="top_header">
      <nav class="nav bg_grid">
        <div class="logo_container">
          <img class="nav_logo" src="images/logo.png" alt="" />
        </div>
        <div class="nav_menu" id="nav-menu">
          <ul class="nav_list">
            <li class="link_item"><a href="#" class="nav_link active">Home</a></li>
            <li class="link_item"><a href="#" class="nav_link">About</a></li>
            <li class="link_item"><a href="#" class="nav_link">Products</a></li>
            <li class="link_item"><a href="#" class="nav_link">Contact</a></li>
          </ul>
        </div>
        <div class="nav_toggle" id="nav-toggle">
          <i class="bx bx-menu"></i>
        </div>
      </nav>
    </header>

1
  • 1
    I would check out minimal reproducible example as I created a quick snippet with test content and put a background color on top_header and didn't have problems. Commented Jun 6, 2023 at 21:04

1 Answer 1

0

Try using the CSS property position sticky. https://developer.mozilla.org/en-US/docs/Web/CSS/position. Might not work with older browsers. If you need to work with older browsers you could also just apply a margin top to the main content.

Sign up to request clarification or add additional context in comments.

1 Comment

Answers should be more specific. Please see How to Answer and consider copying the snippet from the question down here so you can demonstrate your solution.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.