
Navigating web pages smoothly can significantly enhance user experience. A common feature is clicking on a link to automatically scroll to a specific section of the page. However, this can lead to issues when a fixed header is present, causing the targeted section to be hidden underneath it. This blog will guide you through a simple solution using the scroll-margin-top property in HTML and CSS to avoid this problem.
The Problem: Fixed Headers Obscuring Content
Fixed headers are popular in web design for consistent navigation. However, they can cause issues when using anchor links. Consider this scenario:
HTML Code Example
<li>
<a href="#whyme">Why me?</a></li>
<h3 id="whyme">Why me?</h3>
Clicking the “Why me?” link scrolls the page to the corresponding section. If the header is fixed, it can overlap and hide the “Why me?” heading.
Fixed Header Issue
<h1 style="position: fixed; top: 0;">Header</h1>
This causes the header to stay at the top, potentially covering the content when scrolling.
The Solution: Using scroll-margin-top
To prevent the fixed header from overlapping the target section, use the scroll-margin-top CSS property. This property creates a margin at the top of the element, ensuring it remains visible beneath the fixed header.
Updated HTML with scroll-margin-top
<h1 style="position: fixed; top: 0;">Heading</h1>
<li> <a href="#whyme">Why me?</a></li><h3 id="whyme">Why me?</h3>
<div class="space"></div>
<h3 id="whyme" style="scroll-margin-top: 4em;">Why me?</h3>
In this example, the scroll-margin-top property is set to 4em, adjusting the scroll position to ensure the “Why me?” heading is fully visible below the fixed header.
Benefits of scroll-margin-top
- No Extra Padding Needed: Unlike adding padding,
scroll-margin-topdoesn’t create unnecessary blank space above the element. - Consistent Layout: The overall layout remains clean and consistent, improving user experience.
Practical Example: Building a Smooth Scrolling Navigation
To illustrate the effectiveness of this method, let’s create a simple web page with a fixed header and smooth scrolling navigation.
Full HTML Example
htmlCopy code<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Smooth Scrolling Navigation</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
}
header {
position: fixed;
top: 0;
width: 100%;
background-color: #333;
color: white;
padding: 1em;
text-align: center;
z-index: 1000;
}
.content {
margin-top: 3em;
padding: 2em;
}
h3 {
scroll-margin-top: 3em;
}
</style>
</head>
<body>
<header>
<nav>
<ul>
<li><a href="#Origins">Origins</a></li>
<li><a href="#Mission">Mission</a></li>
<li><a href="#Vision">Vision</a></li>
</ul>
</nav>
</header>
<div class="content">
<h3 id="Origins">Origins</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>
<h3 id="Mission">Mission</h3>
<p>Quisque vel leo in lacus vehicula consequat...</p>
<h3 id="Vision">Vision</h3>
<p>Nam vitae mi nec nisi varius auctor non sit amet sapien...</p>
</div>
</body>
</html>
Explanation
- Fixed Header: The
headerelement is styled withposition: fixedto stay at the top. - Content Section: The
contentdiv contains the sections withh3headings. - Scroll Margin: The
scroll-margin-topproperty ensures that headings are not obscured by the fixed header.
Conclusion
Using scroll-margin-top is a simple yet effective way to improve navigation on your web pages with fixed headers. By implementing this technique, you can ensure that your content is easily accessible and visible, providing a seamless browsing experience for your users.
Mayank Khanna’s Tips for Web Development:
- Utilize CSS properties like
scroll-margin-topto solve layout issues efficiently. - Keep your HTML and CSS clean and organized for better maintenance and readability.
- Test your website on different devices to ensure a consistent experience across all platforms.
Happy coding! For more insights and tips on web development, visit my portfolio website.

Leave a comment