どうも、くまだです。
固定ヘッダー追従のとき、例えばメニューをクリックしてそこと紐づいたセクションに遷移しますが、固定ヘッダーの高さ分、セクション上部がヘッダーにかぶってしまうときがあります。
そういうときに使えるCSS。
ヘッダー追従のときアンカー先コンテンツを隠してしまう問題
固定ヘッダーのメニューをクリックすると、遷移先に飛ぶんですが、ヘッダーの高さ分コンテンツが隠れてしまいます。
<div class="container">
<header class="header">
<div class="header__inner">
<p>固定追従ヘッダー</p>
<nav>
<ul class="nav-items">
<li><a href="#section1">セクション1</a></li>
<li><a href="#section2">セクション2</a></li>
<li><a href="#section3">セクション3</a></li>
<li><a href="#section4">セクション4</a></li>
</ul>
</nav>
</div>
</header>
<main>
<section id="section1" class="section section1">
<h2>タイトル</h2>
</section>
<section id="section2" class="section section2">
<h2>タイトル</h2>
</section>
<section id="section3" class="section section3">
<h2>タイトル</h2>
</section>
<section id="section4" class="section section4">
<h2>タイトル</h2>
</section>
</main>
<footer>フッター</footer>
</div>
.container {
padding-top: 60px;
}
.header {
position: fixed;
top: 0;
left: 0;
height: 60px;
background: lightcoral;
width: 100%;
padding: 20px;
}
.header__inner {
display: flex;
align-items: center;
justify-content: space-between;
}
.nav-items {
display: flex;
align-items: center;
}
.nav-items li {
margin-right: 8px;
}
.nav-items li:last-child {
margin-right: 0;
}
.nav-items a{
display: inline-block;
font-size: 12px;
color: #000;
}
.section {
padding: 40px;
height: 400px;
}
.section1 {
background: lightblue;
}
.section2 {
background: lightcyan;
}
.section3 {
background: lightgreen;
}
.section4 {
background: linen;
}
footer {
height: 200px;
background: lightsalmon;
}
セクションに遷移後、セクションタイトルがヘッダーの下にかくれてしまいます。これの解消法としては、以下の記述をCSSに加える。
html {
scroll-padding-top: 60px;
}
これだけでコンテンツがかぶらなくなりました。scroll-padding-topは主要ブラウザではほぼ使用できます。(IEは無視!)
ここまで読んでくださりありがとうございました。