home
twitter
ページトップへ
目次
  • 「position: sticky」を使うと、何ができるの?
  • どのように「position: sticky」は使うのか?
  • 固定したい要素に「position: sticky」と指定する。
  • 他のCSSのプロパティを一緒に使って、要素の位置を指定する。
  • 「top: 0」と一緒に使うとどうなる?
  • 固定できるのは、親要素の範囲内です。
  • 「ーの値」も設定できる。
  • 「top」と「bottom」が両方設定されていた場合はどちらが優先されるの?
  • 「left」と「right」が両方設定されていた場合はどちらが優先されるの?
  • まとめ。
about
categories
page
archive
皇帝ペンギンブログ

2023/06/17 (更新日:2024/07/11)

【CSS】「position: sticky」について簡単に解説。【分かりやすい】

Categories > CSSの基本編
CSSの「position: sticky」について簡単に教えてほしい。

この記事はこのような方へ向けて書いています!

この記事で得られる知識!

  • 「position: sticky」を使うと何ができるのか?
  • 「position: sticky」を使った時の挙動
  • 「position: sticky」の使いどころ

それでは、サクッとこの記事で「position: sticky」の使い方を学習しちゃって下さい!

また、下の動画で「position」プロパティについて詳しく解説しているので、一緒に実際にコードを書きながら学びたい方はこちらをどうぞ!
では、内容へ入っていきますね!
目次
非表示
  • 「position: sticky」を使うと、何ができるの?
  • どのように「position: sticky」は使うのか?
  • 固定したい要素に「position: sticky」と指定する。
  • 他のCSSのプロパティを一緒に使って、要素の位置を指定する。
  • 「top: 0」と一緒に使うとどうなる?
  • 固定できるのは、親要素の範囲内です。
  • 「ーの値」も設定できる。
  • 「top」と「bottom」が両方設定されていた場合はどちらが優先されるの?
  • 「left」と「right」が両方設定されていた場合はどちらが優先されるの?
  • まとめ。

「position: sticky」を使うと、何ができるの?

「position: sticky」を使うことで、一定区間の間だけ、要素を画面上に固定することができます。

たとえ画面をスクロールしたとしても「画面上の一定の位置に」要素を固定することができます。
例えばこんな感じ!
https://chibasyuta.org/wp-content/uploads/2023/06/position_sticky.mp4

説明付きリストを作ってみました。

背景色がグレーの要素に注目してみて下さい。

スクロールすると「一定区間の間だけ」画面上に固定されていると思います。

このようなものが簡単に作れるのが「position: sticky」です!

なるほど!イメージができたよ!

どのように「position: sticky」は使うのか?

では、具体的にどのような仕組みで要素を一定区間の間だけ固定するのか、書いていこうと思います。

仕組み自体は簡単ですのでサクッといきましょう!

固定したい要素に「position: sticky」と指定する。

.gray {
    position: sticky;
  }

まずは、この様に書きます。

ですが、このままでは特に何も起きないので、他のプロパティと一緒に使います。

他のCSSのプロパティを一緒に使って、要素の位置を指定する。

「position: sticky」と指定した要素を、どこに固定するか指定するには、下記のCSSのプロパティを一緒に使います。

「position: fixed」と一緒に使うプロパティ!

  • top
  • left
  • bottom
  • right

これらの中の1つと一緒に使う感じですね。

「top: 0」と一緒に使うとどうなる?

「top: 0」と一緒に使うと、ウィンドウの上端に「position: sticky」と指定した要素が来たタイミングで、その要素はそこで固定されます。

ここで注意してほしいのは、「ウィンドウの上端」ということですね。

「top: 10px」とすると?

「top: 10px」とすると、ウィンドウの上端から「10px」下がった位置に、要素の上端がきたタイミングからそこで要素が固定されます。

固定できるのは、親要素の範囲内です。

<ul>
        <li class="s">sticky</li>
        <li>リスト</li>
        <li>リスト</li>
        <li>リスト</li>
        <li>リスト</li>
        <li>リスト</li>
        <li>リスト</li>
        <li>リスト</li>
        <li>リスト</li>
      </ul>
ul {
    list-style: none;
    margin: 20px;
    border: 4px solid black;
  }
  .s {
    background-color: gray;
    color: white;
    padding: 10px;
    position: sticky;
    top: 10px;
  }

この様なコードを書いたとします。

※HTMLの要素は、上記のコードの部分が10個になるように複製しています。

すると、下の動画のようになります。

https://chibasyuta.org/wp-content/uploads/2023/06/position_sticky_2.mp4

この様に、背景色がグレー色の要素は、一定区間の間だけ、「top: 10px」なので、画面の上端から「10px」下の位置に、要素の上端がきたタイミングで、そこで固定されています。

その一定区間とは、「親要素の範囲内」です。

たしかに、そうなってるね!

「ーの値」も設定できる。

「top」「left」「bottom」「right」には「ー(マイナス)の値」も設定できます。

どうなるかと言うと、「 + (プラス) の値」を設定した時とは、反対の方向へ要素が動きます。

ここまでで、基本的な「position: sticky」の使い方が伝わったと思います!なかなか便利そうですよね~。

「top」と「bottom」が両方設定されていた場合はどちらが優先されるの?

「top」と「bottom」という2つのプロパティがどちらも設定されていた場合は、それらが対抗しまうので、どうなるの?

結論、「top」が優先されます。

「bottom」が効かない!とならないようにです!

「left」と「right」が両方設定されていた場合はどちらが優先されるの?

結論、日本語などでは基本的に「left」が優先されます。

詳しくは、「direction」プロパティの値が、「ltr」の場合は、「left」が優先されます。

逆に、「direction」プロパティの値が、「rtl」の場合は、「right」が優先されます。

日本語や英語などは、テキストは左から右に流れていくので、意識しなくても「left」が優先されますね。

ペルシャ語、アラビア語、ヘブライ語などの、書字方向が右から左の言語などでは、「direction」プロパティの値に「rtl」が使われると思うので、「right」が優先されます。

「left」が優先される!と覚えておけば基本的に問題はなさそうだね!

まとめ。

「position: sticky」を使うことで、要素を「一定区間の間だけ」画面に固定することができます。

具体的な使い方としては、まず、固定したい要素に「position: sticky」と指定します。

そして、要素を固定する位置を決定するには、下記の他のCSSプロパティと一緒に使います。

  • top
  • left
  • bottom
  • right

そして、要素の配置に使う基準はウィンドウとなります。

また、「top」などのプロパティには、「 ー (マイナス)の値」も使うことができます。

「top」と「bottom」が両方設定されていた場合は、「top」が優先される。

「left」と「right」だと、基本的に「left」が優先される。厳密には、これは「direction」プロパティによって変わる。

こんな感じですかね!
また、下の動画で「position」プロパティについて詳しく解説しているので、一緒に実際にコードを書きながら学びたい方はこちらをどうぞ!

それでは、こんな感じでこの記事を終わります!

ではまた!

自分のロゴ!

皇帝ペンギン

全力で、書きます。
少しでもお役に立てたら幸いです。
楽しんで読んで下さい 。-_- 。
よろしくお願いします!

x(旧twitter) youtube
Categories
  • トップへ
  • ITパスポート (1)
  • programming (168)
    • CSSのアニメーション編 (26)
    • CSSのグリッドレイアウト編 (1)
    • CSSのセレクター編 (58)
    • CSSのフレックスボックス編 (1)
    • CSSのメディアクエリー編 (7)
    • CSSの基本編 (34)
    • HTMLのformタグ編 (1)
    • HTMLの基本編 (3)
    • JavaScriptの入門編 (30)
    • JavaScriptの基本編 (5)
    • Web制作をする環境を整えよう! (1)
  • Uncategorized (23)
  • VScode (1)
  • おすすめ商品! (1)
  • クラロワ (2)
  • マーケティング (17)
  • 大学生活 (7)
  • 心理学 (9)
  • 映画 (1)
  • 法学 (4)
  • 経済学 (4)
  • 読書 (7)
Pages
  • プライバシーポリシー
  • 免責事項
  • プロフィール
Archive
  • 2025年3月 (1)
  • 2025年1月 (9)
  • 2024年12月 (13)
  • 2024年11月 (5)
  • 2024年10月 (10)
  • 2024年9月 (15)
  • 2024年8月 (5)
  • 2024年7月 (6)
  • 2024年6月 (5)
  • 2024年5月 (10)
  • 2024年4月 (24)
  • 2024年3月 (11)
  • 2024年2月 (6)
  • 2024年1月 (10)
  • 2023年12月 (4)
  • 2023年11月 (3)
  • 2023年10月 (2)
  • 2023年9月 (3)
  • 2023年8月 (6)
  • 2023年7月 (3)
  • 2023年6月 (8)
  • 2023年5月 (2)
  • 2023年3月 (1)
  • 2023年2月 (1)
  • 2022年10月 (2)
  • 2022年9月 (2)
  • 2022年8月 (8)
  • 2022年7月 (2)
  • 2022年6月 (6)
  • 2022年5月 (9)
  • 2022年4月 (2)
  • 2022年2月 (4)
  • 2021年12月 (1)
  • 2021年11月 (4)
  • 2021年10月 (8)
  • 2021年9月 (14)
  • 2021年8月 (6)
  • 2021年6月 (1)
  • 2021年5月 (2)
  • 2021年4月 (1)
  • 2021年3月 (1)
  • 2021年2月 (2)
  • 2020年10月 (1)
  • 2020年7月 (1)
  • 2020年4月 (1)
  • 2020年1月 (1)
  • 2019年12月 (2)
© Copyright Syuta Chiba, 2019 All Rights Reserved.