適用シナリオ:新しい要件の 1 つはアンケート調査を行うことですが、必然的に多くの質問が含まれ、1 つの質問で複数の人が採点する必要があります。この現象は携帯電話でスライドするときに発生し、上にスワイプすると質問を忘れてしまいます。 そのため、一定の距離を計算した上でタイトルを配置する必要があります。スコアリングを容易にするために、エリアにスライドするタイトルを常に上部に固定します。 解決: 1. 最初に思い浮かぶのは固定レイアウトです。これは、タイトルが一定の距離に達すると画面の上部に固定されることを意味します。 (可能ですが、プロセスがあまりスムーズではありません) Sticky はこの要件を非常によく満たしますが、互換性 (IE との互換性) を考慮する必要があります。 スティッキー実装のアイデア:1. まず、スライダーの位置を記録し、スクロール イベントをリッスンする必要があります。 window.addEventListener("スクロール", this.handleScroll); コンポーネントが破棄される前にこのイベントを削除することを忘れないでください beforeDestroyed() { window.removeEventListener("スクロール"、this.handleScroll); } 2. 画面上部から各質問のタイトルの高さを計算し、配列を作成します。 // 各質問に必ず参照を設定してください。私の参照は各質問の ID です。 -- Vue の略語 --- <div :ref="質問ID" v-for="formData.questions の (質問、インデックス)" :key="インデックス" > // 乱雑さの問題を防ぐために、ソートも実行しました ---- js ----- this.topPositionArr = []; for (let key in this.$refs) { for (let idx in this.$refs[key]) { this.topPositionArr.push(this.$refs[key][idx].offsetTop); } } this.topPositionArr = [...新しいSet(this.topPositionArr)]; this.topPositionArrtopPositionArr = this.topPositionArr.sort( (a, b) => { a - b を返します。 } ); 3. スライドで監視した距離と取得したタイトルを比較し、見つかったタイトルを選択します。 // さまざまなブラウザと互換性があります。ブラウザによって offsetTop を取得する方法が異なります。handleScroll() { this.scrollTop = document.documentElement.scrollTop ? ドキュメント.documentElement.scrollTop : ドキュメント本体のスクロールトップ; scrollTop を this.scrollTop とします。 // 最初の質問の scrollTop は変更されず、2 番目の質問の scrollTop が変更されます this.topPositionArr.forEach((item, idx) => { (idx > 1)の場合{ this.scrollTop = scrollTop + 220; } //なぜこれを行うのですか? IEは固定レイアウトをサポートしていないため、補助するプラグインが必要です。if (this.scrollTop > item) { elements = document.getElementById(`sticky${idx}`); スティッキーフィルに要素を追加します。 } }); } 4. IEの互換性の問題 IEはスティッキーレイアウトをサポートしていないため、ホイールのスティッキーフィルが必要です。 npm インストール スティッキーフィル 糸 スティッキーフィルを追加 ---ビュー--- <div :id="`sticky${question.index}`" クラス="isSticky" > 単一ファイルのインポート 必要なページにインポートします。 <script src="stickyfill.min.js へのパス"></script> var Stickyfill = require("stickyfill"); var スティッキーフィル = スティッキーフィル(); js ファイル: 具体的な方法については上記3を参照 elements = document.getElementById(`sticky${idx}`); スティッキーフィルに要素を追加します。 上記は完璧に実現できます~~~ 最終効果画像:CSS スティッキーレイアウトを使用してヘッダーを上部に配置する方法についての記事はこれで終わりです。より関連性の高い CSS スティッキーコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: Docker ケース分析: Redis サービスの構築
>>: React の調整アルゴリズム Diffing アルゴリズム戦略の詳細な説明
この記事では、カルーセルアニメーションを実現するためのVueコンポーネントの具体的なコードを例として...
GROUP BY 構文を使用すると、指定されたデータ列の各メンバーに従ってクエリ結果をグループ化して...
4 つのネットワーク タイプ:なし: コンテナのネットワーク機能を一切設定しません。--net=no...
1. 問題の説明Docker コンテナにインストールされているストレージが終了状態になっているため、...
エンジニアリング構造プロジェクトは2つの部分に分かれています。bilibili-apiはAPIインタ...
LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | grep ...
ローカルでコンテナを作成した後、このコンテナに基づいてローカル イメージを作成し、このイメージを D...
前回の記事に引き続き、web02 サーバーを作成し、web01 サーバーと web02 サーバーの ...
この記事では、MySQL 8.0.16 Win10 zip版のインストールと設定のグラフィックチュー...
序文MySQL マスター スレーブ レプリケーションの遅延は、業界では長年の問題となっています。遅延...
MySQLデータベースをインストールするa) MySQL ソースインストールパッケージをダウンロード...
以下では、CSS を使用してハートの形を描く 3 つの方法を紹介します。実装プロセスは非常にシンプル...
目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...
目次JSON.パースJSON.parse 構文リバイバーパラメータJSON.parse の機能その他...
この記事では、例を使用して、MySQL ユーザー権限を確認および管理する方法を説明します。ご参考まで...