Vueはタブナビゲーションバーを実装し、左右のスライド機能をサポートしています

Vueはタブナビゲーションバーを実装し、左右のスライド機能をサポートしています

この記事では主に、Vue を使用してタブ ナビゲーション バーを実装し、flex レイアウトを使用して左右のスライドを実現し、ボタンの位置を計算し、最初の画面に表示された最後の要素をクリックしてもまだ表示されていない要素がある場合に、表示されていない要素を自動的にスライドして表示する方法について説明します。

タブナビゲーションバーのレイアウト:

<セクションクラス="テーマリスト">
  <div class="fixed-nav" ref="fixednav">
    <div class="fixed-nav-content">
      <p
        v-for="(item, index) テーマ内"
        :key="インデックス"
        :class="['タブタイトル', アクティブID === インデックス && 'タブの選択']"
        @click="changeTab(インデックス、$event)"
      >
        {{ アイテム }}
      </p>
    </div>
  </div>
</セクション>
テーマ: ['CSDN ブログ'、'ブログガーデン'、'大学受験がんばれ'、'高校受験がんばれ'、'リトルジョイ'、'70周年']、
アクティブID: 0

ナビゲーション バーのスタイル コード:

.テーマリスト{
  上マージン: 12px;
}
.固定ナビゲーション{
  オーバーフローx: スクロール;
  -webkit-オーバーフロースクロール: タッチ;
}
.fixed-nav-content {
  ディスプレイ: フレックス;
}
.タブタイトル{
  パディング: 0 13px;
  右マージン: 12px;
  色: #141414;
  境界線の半径: 13px;
  フォントサイズ: 12px;
  フレックス収縮: 0;
  高さ: 0.52rem;
  行の高さ: 0.52rem;
}

この時点で、次のスタイルを実装し、タブを左右にスライドすることができます。

ここに画像の説明を挿入

幅が外部コンテナの幅より大きい場合にタブが縮小されないように、スタイル コードにflex-shrink : 0追加する必要があることに注意してください。

このようにして、基本的なタブ ナビゲーション バーが実装されました。次に、これを実装します。「高校入試頑張ってください」をクリックすると、タブ全体が左にスライドして、残りのタブ要素が表示されます。

changeTab(id, イベント) {
  // 選択されたものが現在アクティブなものと異なる場合 if (id !== this.activeId) {
    this.activeId = id;
    // 現在のボタンの位置を計算して、移動する必要があるかどうかを確認します const spanLeft = event.clientX; // 現在クリックされている要素の左の距離 const divBox = document.querySelector(".select-tab").clientWidth / 2; // クリックされた要素の幅の半分 const totalWidths = document.body.clientWidth; // 画面全体の幅 const widths = totalWidths / 2; // 画面の幅の半分 const spanRight = totalWidths - spanLeft; // 要素の右の距離 const scrollBox = document.querySelector(".fixed-nav"); // 最も外側の要素を取得します const scrollL = scrollBox.scrollLeft; // スクロールバーがスクロールする距離 // 要素の左または右の距離が 100 未満の場合にスライドします if (spanRight < 100 || spanLeft < 100) {
      scrollBox.scrollLeft = scrollL + (spanLeft - 幅) + divBox;
    }
  }
}

この方法ではタブの自動スクロールを実現できますが、スライド時にスクロールバーが表示されるため、見た目があまり美しくないという問題がまだあります。

/*水平スクロールバーと垂直スクロールバーのサイズに応じて、スクロールバーの高さと幅、および背景の高さと幅を定義します*/
::-webkit-スクロールバー{
  幅: 0.01rem;
  不透明度: 0;
  表示: なし;
}
/*スクロールバートラックの内側の影と丸い角を定義します*/
::-webkit-スクロールバートラック{
  背景色: #fff;
  不透明度: 0;
}
/*スライダーの内側の影と丸い角を定義します*/
::-webkit-スクロールバー-サムネイル {
  幅: 0.01rem;
  境界線の半径: 0.01rem;
  不透明度: 0;
}

このようにナビゲーションバーが実現され、会社の業務に合わせてナビゲーションバーのスタイルを変更することができます!

これで、左右スライドをサポートするタブナビゲーションバーの Vue 実装に関するこの記事は終了です。Vue の左右スライドナビゲーションバーに関する関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueは左上と右上のスライドナビゲーションを実装します
  • Vue は左右のスライド効果のサンプルコードを実装します
  • Vue+swiperは左右にスライドするテスト問題機能を実装します
  • Vueはスワイパーを使用して左右にスライドすることで画像を切り替える
  • Vueはbetter-scrollを使用してスライドと左右の連動を実現しています
  • Vueモバイル端末での左右スライドイベントの詳しい説明
  • Vueモバイル端末は携帯電話を左右にスライドして入力するアニメーションを実現
  • Vueでモバイル端末上で左右スライド効果を実現する方法
  • Vueをベースにページ切り替えの左右スライド効果を実装する
  • Vueの左右スライドボタングループコンポーネントの使い方の詳細な説明

<<:  Nginx ベースのアクセス制御と接続制限の実装

>>:  Truncate Table の使用法の説明

推薦する

ふるい抽選を実施するミニプログラム

この記事の例では、ふるい抽選を実装するためのミニプログラムの具体的なコードを参考までに共有しています...

...

Linux 環境に MySQL 8.0 をインストールするプロセスの紹介

目次序文1. Linux は yum ソースを変更します (MYSQL のインストールが遅い場合は試...

Mysql は、デッドロック問題を解決するために kill コマンドを使用します (実行中の特定の SQL ステートメントを強制終了します)。

MySQL を使用して特定のステートメントを実行すると、データ量が多いためにデッドロックが発生し、...

Linux システム MySQL8.0.19 クイックインストールと構成チュートリアル図

目次1. 環境の紹介2. MySQL-8.0.19をインストールする3. MySQLを設定する1. ...

Docker を使用した ELK7.3.0 ログ収集サービスの導入に関するベスト プラクティス

最初に書くこの記事では、ELK 7.3.0 の展開についてのみ説明します。展開環境:システムセントO...

MySQL は SQL ステートメントの最新のレコードをクエリします (最適化)

最悪の選択肢は、結果を時間順に並べ替えて最初のものを取ることです。 *から選択 ここで、create...

ウェブデザイナーが持つべき資質と能力

Web デザインは、インターネットの出現後に誕生した新興の周辺産業です。 Web ページは店頭のよう...

js のマクロタスクとマイクロタスクについての簡単な説明

目次1. JavaScriptについて2. JavaScript イベントループ3. マクロタスクと...

Vueはページの部分的なリフレッシュを実装します(ルータビューのページリフレッシュ)

Vue でprovide+inject組み合わせを使用するまず、App.vue を変更する必要があ...

JS でシングルトン モードを実装するための 6 つのソリューションの概要

序文今日は、デザインパターンのクリエーションパターンを見直していたところ、JS でシングルトンパター...

Nginx シグナル制御

Nginx の紹介Nginx は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...

JS 関数とコンストラクタを簡単に理解する

目次1. 概要1.1 Functionコンストラクタを使用して関数を作成する1.2 機能と目的2. ...

ページ下部のフッターを修正する方法(複数の方法)

フロントエンド Web エンジニアとして、ページ効果を作成するときに次の現象に遭遇したことがあるはず...