Written by Kasumi

position: sticky;で要素が追従しない時の原因・対処方法

CSSのposition: sticky;を要素に指定したが追従しない。

本記事ではこのような悩みを解決します。

position: sticky;が機能しない原因

position: sticky;を使っても追従しない原因としては、親要素にoverflow: hidden;が指定されてる可能性があります。

overflow: hidden;の用途としては、 コンテンツからはみ出した要素をトリミングする役割で使われてるケースが多いです。

上記プロパティがあるとposition: sticky;は機能しないです。

対処方法

対処方法としては親要素のoverflow: hidden;を削除するか、overflow: hidden;を指定してある要素の外でposition: sticky;を使用するかになります。

要素を移動できない場合はJavaScriptを使う

  <main class="main">
    <!-- ここにspanタグを移動 -->
  </main>
  <!-- overflow: hidden;が効いてる要素 -->
  <div class="parent">
    <span class="txt">追従要素</span>
  </div>
  <script>
    var main = document.querySelector(".main");
    var txt = document.querySelector(".txt");
    // mainタグ内に移動
    main.appendChild(txt);
  </script>

要素を手動で移動できない場合はJavaScriptを使って移動しましょう。

上記コードはparentクラスのdivタグがoverflow: hidden;されており、mainタグ内に追従要素を移動してposition: sticky;を機能させたい場合のコード例です。

appendChildメソッドを使うと特定要素の最後に指定した要素を移動できます。

引数に移動する要素を指定すればOKです。

まとめ

position: sticky;で要素が追従しない時の原因・対処方法について紹介しました。

以上で解説を終わります。

目次

関連記事

HTMLCSS プログラミング

【簡単CSS】flexboxで孫要素の高さを揃えて均等に子要素を横並び配置する方法

2022.03.06
9946
HTMLCSS

CSSのwhite-space nowrapを子要素だけ解除する方法

2022.08.28
3389
HTMLCSS プログラミング

flexbox(フレックスボックス)で横並びにした要素の線の重なりを無くす方法

2021.03.02
5448
HTMLCSS

CSSで要素が空かどうか判別。任意のスタイルを適用する方法

2023.04.16
1670