1. ホーム
  2. jquery

[解決済み] サイドバーの粘着性:下へスクロールすると下に、上へスクロールすると上にくっつく

2022-10-13 16:20:56

質問

私は、粘着性サイドバーの問題に対する解決策をしばらく探していました。私はそれが動作するようにしたい方法の特定のアイデアを持っています。効果的に、私はそれがあなたがスクロールダウンすると下部に固執するようにしたいと思い、すぐにあなたが戻ってスクロールアップすると、私はそれが流動的な動き(ジャンプなし)で、一番上に固執するようにしたいと思います。私が達成しようとしていることの例を見つけることができないので、ポイントをより明確に説明することを望む画像を作成しました。

  1. サイドバーはヘッダーの下に位置します。
  2. スクロールダウンしても、サイドバーはページのコンテンツと同じ高さのままなので、サイドバーとコンテンツの両方を通してスクロールすることができます。
  3. サイドバーの下部に到達すると、サイドバーはビューポートの下部に張り付きます(ほとんどのプラグインは上部への張り付きのみを許可し、下部への張り付きを許可するいくつかのプラグインは両方を許可しません)。
  4. 下部に到達すると、サイドバーはフッターの上に収まります。
  5. 上にスクロールして戻ると、サイドバーはコンテンツと水平のままなので、コンテンツとサイドバーを再びスクロールすることができます。
  6. サイドバーの最上部に到達すると、サイドバーはビューポートの最上部に張り付きます。
  7. 上部に到達すると、サイドバーはヘッダーの下に戻って座ります。

私はこれが十分な情報であることを望みます。私はあらゆるプラグイン/スクリプトをテストするためにjsfiddleを作成し、それはこの質問のためにリセットされました。 http://jsfiddle.net/jslucas/yr9gV/2/ .

どのように解決するのですか?

+1 非常に素晴らしい、イラストのような画像に。

古い質問ですが、何気なく同じ質問が投稿されているのを見つけ フォーラム.jquery.com とそこに1つの答え (by@tucker973) は、これを作るために1つの素敵なライブラリを提案し、ここでそれを共有したいと思いました。

これは sticky-kit によって リーファ

ここに、私が用意した非常に基本的な例のコードと、その結果を見るための動作デモがあります。

/*!
 * Sticky-kit
 * A jQuery plugin for making smart sticky elements
 *
 * Source: http://leafo.net/sticky-kit/
 */

$(function() {
  $(".sidebar").stick_in_parent({
    offset_top: 10
  });
});
* {
  font-size: 10px;
  color: #333;
  box-sizing: border-box;
}
.wrapper,
.header,
.main,
.footer {
  padding: 10px;
  position: relative;
}
.wrapper {
  border: 1px solid #333;
  background-color: #f5f5f5;
  padding: 10px;
}
.header {
  background-color: #6289AE;
  margin-bottom: 10px;
  height: 100px;
}
.sidebar {
  position: absolute;
  padding: 10px;
  background-color: #ccc;
  height: 300px;
  width: 100px;
  float: left;
}
.main {
  background-color: #ccc;
  height: 600px;
  margin-left: 110px;
}
.footer {
  background-color: #6289AE;
  margin-top: 10px;
  height: 250px;
}
.top {
  position: absolute;
  top: 10px;
}
.bottom {
  position: absolute;
  bottom: 10px;
}
.clear {
  clear: both;
  float: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://leafo.net/sticky-kit/src/jquery.sticky-kit.js"></script>
<div class="wrapper">
  <div class="header"> <a class="top">header top</a>
    <a class="bottom">header bottom</a>

  </div>
  <div class="content">
    <div class="sidebar"> <a class="top">sidebar top</a>
      <a class="bottom">sidebar bottom</a>

    </div>
    <div class="main"> <a class="top">main top</a>
      <a class="bottom">main bottom</a>

    </div>
    <div class="clear"></div>
  </div>
  <div class="footer"> <a class="top">footer top</a>
    <a class="bottom">footer bottom</a>

  </div>
</div>

もちろん、すべてのクレジットは、プラグインの作成者に行く、私はここでそれを表示するために、この例を作っただけ。私はあなたが後にあったのと同じ結果を達成する必要があり、このプラグインは非常に有用であることがわかった。