固定サイドバーを実現するためのJavaScript

固定サイドバーを実現するためのJavaScript

固定サイドバーを実装するにはJavaScriptを使用します。参考までに、具体的な内容は次のとおりです。

まだフロントエンドの勉強中です。コードに不備や間違った考えがあったらご容赦ください。アドバイスをよろしくお願いします。

特定のショッピングモールや特定のウェブサイトを閲覧しているとき、サイドバーと呼ばれるものによく遭遇します。これはブラウザの閲覧の長さに応じて変化し、ウィンドウに対して固定された位置を実現します。

**コードは以下のとおり**

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
 <メタ文字セット="UTF-8">
 <title>タイトル</title>
 <スタイル>
 。cm{
 位置: 絶対;
 上: 300px;
 左マージン: 1150px;
 幅: 60ピクセル;
 高さ: 130px;
 背景色: ピンク;
 }
 .w{
 マージン: 10px 自動;
 幅: 80%;
 }
 。頭{
 高さ: 200px;
 背景色: 青;
 }
 。バナー{
 高さ: 400px;
 背景色: 緑;
 }
 。主要{
 高さ: 1000ピクセル;
 背景色: ホットピンク;
 }
 スパン {
 表示: なし;
 /*位置: 絶対;
 下部: 0;*/
 }
 </スタイル>
</head>
<本文>
 <div class="cm">
 <span class="backTop">トップに戻る</span>
 </div>
 <div class="head w">ヘッドエリア</div>
 <div class="banner w">バナーエリア</div>
 <div class="main w">メインエリア</div>
 <スクリプト>
 var cm = document.querySelector('.cm')
 var バナー = document.querySelector('.banner')
 /*console.log(バナー.offsetTop)*/
 // カールした頭のサイズと位置は外側に書き込まれます var Bannertop=banner.offsetTop
 var cmtop=cm.offsetTop-bannertop
 var main = document.querySelector('.main')
 var goback = document.querySelector('.backTop')
 var maintop=main.offsetTop
 document.addEventListener('スクロール',function() {
 //ページがロールアウトされます /*console.log(window.pageYOffset)*/
 //curl ヘッダーが 214 より大きい場合、サイドバーは固定されます if (window.pageYOffset>bannertop){
 cm.style.position='固定'
 cm.style.top=cmtop+'px'
 }それ以外 {
 cm.style.position='絶対'
 スタイルトップ='300px'
 }
 (window.pageYOffset>maintop)の場合{
 goback.style.display='ブロック'
 }それ以外 {
 goback.style.display='なし'
 }
 })
 </スクリプト>
</本文>
</html>

デモンストレーション効果

コードの説明

ここではドキュメントに追加されたイベント scroll が使用され、ブラウザの scroll イベントはスクロール時に関数をトリガーするために使用されます。

ここで、bannerTop という変数が設定されています。これは、中央の緑色のモジュールの上部とページの上部の間の距離です。次に、変数 cmtop が定義されます。ここで、cm はサイドバーから上部までの距離で、cmtop=bannerTop-cm.offsetTop です。次に、ページの巻き上がり長さが中間モジュールから上部までの距離より大きいかどうかを判断します。これは、ページが中間モジュールまでスワイプされたかどうかを意味します。中間モジュールまでスワイプされた場合は、サイドバーの位置を固定し、それに応じてサイドバーから上部までの距離を変更します。この場合、サイドバーと中間ブロックは比較的静的であるため、中間領域に巻き込まれていない場合は cmtop の値が一定であり、中間領域に巻き込まれた場合はバナーになります。 Top の値が負の値になったため、それに応じて cmtop の値が増加し、この増加した値がサイドバーの上部からの距離の値に渡されます。これにより、サイドバーが中央領域までスクロールされたときに、サイドバーが比較的静止したままになる状況が発生します。中央の領域をスライドしないと、サイドバーはデフォルトの位置のままになります。

その後、最後の領域までスワイプすると、サイドバーに「先頭に戻る」という文字が表示されます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • スクロールバーに合わせてスライドするブログサイドバーモジュールの固定効果を実装する方法(js+jqueryなど)
  • 動的なサイドバーコードを実装するためのJavaScript
  • 動的サイドバーの例の JavaScript 実装の詳細な説明
  • js を使用してレスポンシブ サイドバーを作成する
  • JS はサイドバーのマウスオーバーポップアップボックス + バッファ効果を実装します
  • シンプルな非表示サイドバー機能を実現する JavaScript の例
  • slideout.js をベースにモバイル サイドバーのスライド効果を実装する
  • JS モーション フレームワーク共有サイドバー アニメーションの例
  • JavaScriptでシームレススクロールを実装し、サイドバーのサンプルコードに共有する
  • フルスクリーンサイドバーを実現するためのjs+css
  • JSは京東製品分類サイドバーを実現
  • JSで実現したページサイドバーの効果に関する研究

<<:  MySQL 5.7 で業務を停止せずに従来のレプリケーションを GTID レプリケーションに変更する例

>>:  広告を閉じるための JavaScript カウントダウン

推薦する

Node.js コンソールで強調表示されたコードを印刷する方法

序文コードを実行してエラーが発生すると、エラーが出力されます。エラーにはスタック情報が含まれており、...

MySQL で遅いファジークエリを最適化する方法

目次1. はじめに: 2. 最初のアイデアはインデックスを構築することです3. 命令P.S. Lik...

CSS変換ページめくりアニメーションレコードの実装

ページめくりの問題のシナリオBとCは同じページ(表と裏)にありますページをめくって A をカバーした...

Vueを使用してタイマー機能を実装する

この記事の例では、タイマー機能を実装するためのVueの具体的なコードを参考までに共有しています。具体...

Vueタイマーの詳細な使い方

この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

MySQLは遅いSQLを開始し、原因を分析します

ステップ1. MySQLスロークエリを有効にする方法1: 設定ファイルを変更するWindows: W...

CSS で縦書きテキスト配置を実装する方法 (概要)

HTML でのテキストのデフォルトの配置は水平ですが、特殊な場合にはテキストを垂直に配置する必要が...

エージェントを介したzabbix監視プロセスとポートの詳細なプロセス

環境の紹介オペレーティングシステム: Centos 7.4 Zabbix バージョン: zabbix...

HTML タグのネスト規則の紹介

XHTML タグには、div、ul、li、dl、dt、dd、h1~h6、p、a、addressa、s...

nginx で第 3 レベルドメイン名を設定する方法の例

問題の説明nginx を設定することで、異なるポートを介して異なる Web アプリケーションにアクセ...

面接では、select...for update がテーブルをロックするのか、それとも行をロックするのか尋ねられました。

目次確認する:例の検証と組み合わせるselect クエリ ステートメントはロックされませんが、sel...

Linux カーネル デバイス ドライバーのメモリ管理に関する注意事項

/************************ * Linux メモリ管理 *********...

HTMLタグオーバーフロー処理アプリケーション

CSSを使用してスクロールバーを変更する1.コンテンツがオーバーフローした場合のオーバーフロー設定水...

MySQLでカーソルトリガーを使用する方法

カーソル選択クエリによって返される行のセットは、結果セットと呼ばれます。結果セット内の行は、入力した...

MySQL alter ignore構文の詳細な説明

今日仕事中に、ビジネス側から次のような質問をされました。テーブルがあり、一意のフィールドを追加する必...