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

tableのtd・thタグ内テキストが改行されない原因と解決方法

2022.06.06
4356
HTMLCSS

スマホを横向き・縦向きに切り替えた時だけ任意のCSSを実行する方法

2023.02.06
210
HTMLCSS プログラミング

CSSで背景画像を右からを基準にpx指定する方法

2020.07.13
1478
HTMLCSS プログラミング

form(フォーム)タグでエンターキー送信を無効にする方法

2021.12.21
3328