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 の使用法の説明

推薦する

CentOS 8 に Postfix メール サーバーをインストールして設定する方法

Postfix は、Linux システム上で電子メールをルーティングまたは配信するために使用される無...

Linux で LVGL エミュレータをコンパイルする際のエラーの解決方法

目次1. エラー現象2. エラー分析3. エラー解決1. エラー現象仮想マシンでLVGLエミュレータ...

Linux リモート コントロール Windows システム プログラム (3 つの方法)

場合によっては、Windows システム上のプログラムを Linux 上でリモートで実行する必要があ...

MySQLデータベースを定期的に自動バックアップする方法

データは貴重なものであることは誰もが知っています。データをバックアップしなければ、データをそのまま放...

MySQL データベースに基づくデータ制約の例と 5 つの整合性制約の紹介

非準拠データがデータベースに入るのを防ぐために、ユーザーがデータを挿入、変更、削除、その他の操作を行...

オブジェクトのプロパティを反復処理する際の TypeScript の問題

目次1. 問題2. 解決策1. オブジェクトをanyとして宣言する2. オブジェクトのインターフェー...

blockquote タグの使用に関する注意

<br />セマンティクス化は一言で説明することはできないし、まだ公式かつ厳密な定義もあ...

HTML チュートリアル: 画像のサイズ、配置、間隔、境界線の属性を変更する方法

画像タグ: <img> ページに画像を挿入するには、「src」属性を持つ「img」タグを...

Docker Compose で環境変数を参照する方法の例

プロジェクトでは、さまざまな条件や使用シナリオを制御するために、docker-compose.yml...

Vue のドロップダウン ボックスのセカンダリ リンク効果を実装するためのサンプル コード

1. 成果を達成する 2. バックエンドから返されるデータ形式 「リスト」: [ { "i...

キャンバスでPS消しゴムスクラッチカードの効果を実現するためのJSの使用方法の詳細な説明

目次効果のデモンストレーション:メインJSコード実装 <div class="box...

Vueの使用に関する深い理解

目次Vueのコアコンセプトを理解するVueの双方向バインディングの原理と実装を探るVue 双方向バイ...

CSS で放射状グラデーションを使用してカード効果を実現する

数日前、同僚がポイントモールプロジェクトを受け取りました。このプロジェクトには、カードやクーポンをギ...

Dockerのインストール、イメージの作成、NodeJSプログラムの読み込みと実行の詳細なプロセス

システム環境: Windows 7 1. DockerをインストールするDocker公式サイトからd...

MySQLのINサブクエリによってインデックスが使用できなくなる問題を解決する

今日は、MySQL IN サブクエリの最適化に関するケーススタディを見ました。最初は少し懐疑的でした...