要素をスクロールした際に固定する
便利なプロパティPosition-Stickyの使い方

CSSのposition: sticky;は、要素をスクロールする際に固定された位置に保つためのプロパティです。このプロパティを使用すると、要素は一時的に固定された状態でスクロールされ、指定した位置までスクロールすると固定が解除されます。当サイトのサイドバーもposition: sticky;を使用しております。
実装に際して、注意すべき点にいくつか気づきましたので、詳細をご説明いたします。
position: sticky;の実装
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id="global-container">
<div id="container">
<header>header</header>
<main id="top">
<div id="main-container">
<div class="wrapper">
<div class="content">content</div>
<aside>aside</aside>
</div>
</div>
</main>
<footer>footer</footer>
</div>
</div>
</body>
</html>body {
font-size: 30px;
}
header {
background-color: #3898e0;
display: flex;
justify-content: center;
align-items: center;
height: 100px;
}
.wrapper {
display: flex;
justify-content: space-between;
height: 200vh;
}
.content {
background-color: #a5c1ea;
width: 65%;
display: flex;
justify-content: center;
align-items: center;
}
aside {
width: 30%;
display: flex;
justify-content: center;
align-items: center;
background-color: #d5dfef;
position: sticky;
top: 0;
height: 50vh;
}
footer {
background-color: #cce4ff;
height: 100px;
display: flex;
justify-content: center;
align-items: center;
}プロパティが効かないときのチェックポイント
36行目のHTMLコードでは、top: 0;を使用してposition: sticky;が指定された要素を明確な位置に指定する必要があります。
37行目のHTMLコードでは、指定した要素が機能するためにheightを指定する必要があります。例えば、heigh: 50vh;のように要素の高さを指定します。要素が親要素内で固定されるため、親要素には適切な高さが必要です。
親要素にoverflow: hidden;が指定されていないかを確認してください。overflow: hidden;が指定されている場合、要素がスクロール可能な状態になりません。
ここでいう親要素の対象は、body/global-container/container/main/main-container/wrapperが対象になります。
position: sticky;は一部のブラウザでサポートされていない場合があります。特に、古いバージョンのインターネットエクスプローラーではサポートされていません。使用する場合は、ブラウザの互換性に注意してください。
参考になる動画の紹介
「YouTubeプロントエンドチャンネル」は、武田一真(たけだかずま)さんの動画です。とても参考になる内容です。フロントエンドに関する様々な動画をアップしています。動画のリンクはこちらです。




