ホームページ > 記事 > ウェブフロントエンド > vue がスクロール イベントをリッスンし、要素を上部または固定位置に表示する方法の詳細な説明
この記事では主に、Vue の特定の要素の天井または固定位置表示とスクロール イベントの監視について詳しく紹介します。興味のある方は参考にしていただければ幸いです。
私は最近、特定の部分の天井効果を達成する必要がある VUE Web アプリ プロジェクトを作成しました。つまり、ページが上にスライドしてこの部分に到達すると、この部分が固定されて上部に表示されます。
1. スクロール イベントをリッスンします
VUE を使用して、現在のスクロールトップをコンソールに出力するスクロールトップを作成します。まず、マウントされたフックのウィンドウにスクロール リッスン イベントを追加します。
mounted () { window.addEventListener('scroll', this.handleScroll) },次に、メソッド内で、この handleScroll メソッドを追加します
handleScroll () { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop console.log(scrollTop) },コンソールの出力結果: 2. 要素から上部までの距離を監視し、スクロール距離が要素から上部までの距離より大きいかどうかを判断し、searchBar を true に設定します。 、そうでない場合は false
handleScroll () { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop var offsetTop = document.querySelector('#searchBar').offsetTop if (scrollTop > offsetTop) { this.searchBarFixed = true } else { this.searchBarFixed = false } },要素を先頭に固定するスタイル、isFixed (書き込みを少なくする)
.searchBar{ .isFixed{ position:fixed; background-color:#Fff; top:0; z-index:999; } ul { WIDTH:100%; height: 40px; line-height: 40px; display: flex; li { font-size: 0.8rem; text-align: center; flex: 1; i { font-size: 0.9rem; padding-left: 5px; color: #ccc; } } border-bottom: 1px solid #ddd; } }次に、固定する必要がある要素のクラスを searchBar にバインドします。 searchBar が true の場合、これを適用します。修正されたスタイル
<p class="searchBar" id="searchBar"> <ul :class="searchBarFixed == true ? 'isFixed' :''"> <li>区域<i class="iconfont icon-jiantouxia"></i></li> <li>价格<i class="iconfont icon-jiantouxia"></i></li> <li>房型<i class="iconfont icon-jiantouxia"></i></li> <li>更多<i class="iconfont icon-jiantouxia"></i></li> </ul> </p>修正された結果: このページを離れる場合は、この監視対象イベントを削除する必要があることに注意してください。削除しないと、エラーが報告されます。
destroyed () { window.removeEventListener('scroll', this.handleScroll) },関連する推奨事項:
jsを使用してナビゲーションの天井効果を実現するためのナビゲーションバーの天井操作を実装する方法に関する例の共有
以上がvue がスクロール イベントをリッスンし、要素を上部または固定位置に表示する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。