Vueは3段階のナビゲーション表示と非表示を実装します

Vueは3段階のナビゲーション表示と非表示を実装します

この記事では、3階層ナビゲーションの表示と非表示を実現するためのVueの具体的なコードを例として紹介します。具体的な内容は以下のとおりです。

要件の説明:

サイドバーの3階層ナビゲーションの表示と非表示を実現します。プライマリ ナビゲーションの 1 つをクリックすると、そのプライマリ ナビゲーションのセカンダリ ナビゲーションが表示され、クリックするとそのセカンダリ ナビゲーションが閉じます。プライマリ ナビゲーション内の他の項目については、セカンダリ ナビゲーションを展開します。他のプライマリ ナビゲーションのセカンダリ ナビゲーションを閉じます。

効果は以下のとおりです。

コード:

<テンプレート>
  <div id="アプリ">
    <img alt="Vue ロゴ" src="./assets/logo.png" />
    <HelloWorld msg="Vue.js アプリへようこそ" />
    <div class="first" v-for="(item, key) in navLists" :key="key">
      <li>
        <span @click="handleClick(キー)"> {{ item.title }}</span>
        <div
          v-for="(item2, key2) in item.child"
          :key="キー2"
          クラス="second"
          v-show="show2 && currIndex == キー"
        >
          <p @click="secondClick(key2)">{{ item2.subTitle }}</p>
          <div
            v-for="(item3, key3) in item2.threeChild"
            :key="キー3"
            クラス="3"
           v-show="show3 && currIndex2 == key2"
          >
            {{ item3.threeTitle }}
          </div>
        </div>
      </li>
    </div>
  </div>
</テンプレート>
 
<スクリプト>
「./components/HelloWorld.vue」からHelloWorldをインポートします。
 
エクスポートデフォルト{
  名前:「アプリ」、
  コンポーネント:
    こんにちは世界、
  },
  データ() {
    戻る {
      私: 0,
 
      表示3: 偽、
      表示2: 偽、
      navリスト: [
        {
          タイトル:「プロジェクト情報」、
          子供: [
            {
              サブタイトル:「プロジェクト紹介」
              サブタイトル: "#プロジェクト紹介",
              3人の子供: [
                { threeTitle: "3 レベルのナビゲーション" },
                { threeTitle: "3 レベルのナビゲーション" },
                { threeTitle: "3 レベルのナビゲーション" },
              ]、
            },
            {
              サブタイトル:「サンプル情報」、
              3人の子供: [
                { threeTitle: "3階層ナビゲーション22" },
                { threeTitle: "3階層ナビゲーション22" },
                { threeTitle: "3階層ナビゲーション22" },
              ]、
            },
 
            {
              サブタイトル:「サンプル情報」、
              3人の子供: [
                { threeTitle: "第 3 レベルのナビゲーション 33" },
                { threeTitle: "第 3 レベルのナビゲーション 33" },
                { threeTitle: "第 3 レベルのナビゲーション 33" },
              ]、
            },
          ]、
        },
        {
          タイトル:「プロジェクト情報2」
          子供: [
            {
              サブタイトル:「プロジェクト紹介22」
              3人の子供: [
                { threeTitle: "3 レベルナビゲーション 44" },
                { threeTitle: "レベル 3 ガイド 44" },
                { threeTitle: "第3レベルナビゲーション22" },
              ]、
            },
            {
              サブタイトル:「サンプル情報22」
            },
          ]、
        },
        {
          タイトル:「プロジェクト情報3」
          eタイトル: "#プロジェクトメッセージ",
          子供:
            {
              サブタイトル:「プロジェクト紹介33」
              サブタイトル: "#プロジェクト紹介",
            },
            {
              サブタイトル:「サンプル情報33」
              サブタイトル: "#sampleInformation",
            },
          ]、
        },
        {
          タイトル:「プロジェクト情報2」
          子供: [
            {
              サブタイトル:「プロジェクト紹介22」
            },
            {
              サブタイトル:「サンプル情報22」
            },
          ]、
        },
        {
          タイトル:「プロジェクト情報3」
          子供: [
            {
              サブタイトル:「プロジェクト紹介33」
            },
            {
              サブタイトル:「サンプル情報33」
            },
          ]、
        },
      ]、
 
      currIndex: "", //現在のインデックス spanIndex: [], //インデックス配列 arrIndex: "", //配列にインデックスを付けて現在のインデックスを見つけるかどうかを決定するために使用されます。 -1 は見つからなかったことを意味し、0 は見つかったことを意味します。
 
      currIndex2: "", //セカンダリナビゲーションの現在のインデックス spanIndex2: [], //インデックス配列 arrIndex2: "", //配列をインデックス付けして現在のインデックスを見つけるかどうかを決定するために使用されます。 -1 は見つからなかったことを意味し、0 は見つかったことを意味します。
    };
  },
  メソッド: {
    ハンドルクリック(インデックス) {
      // デフォルトでは表示されない第 3 レベルのナビゲーションを初期化します。
      this.show3 = false;
      this.spanIndex2.splice(-1, 1);
 
      // 現在のインデックス = インデックス
      this.currIndex = インデックス;
      console.log("現在のインデックス", index);
      // 現在のインデックスがインデックス配列 spanIndex 内にあるかどうかを判断します。 arrIndex に指定できる値は 2 つだけです: -1 が見つかりません。 0件見つかりました。
      this.arrIndex = this.spanIndex.indexOf(インデックス);
      console.log("arrIndex", this.arrIndex);
 
      (this.arrIndex == 0)の場合{
        //arrIndex == 0 の場合、インデックスが見つかり、インデックス配列 spanIndex 内のインデックスが削除され、セカンダリ ナビゲーションが非表示になります。
        this.spanIndex.splice(this.arrIndex、1);
        this.show2 = false;
      } それ以外 {
        // arrIndex ==-1、見つからない、splice(-1,1) は spanIndex 配列の末尾から 1 つの値を削除し、現在のインデックスをインデックス配列 spanIndex に追加します。show2 は true で、セカンダリ ナビゲーションを表示します。
        this.spanIndex.splice(this.arrIndex、1);
        this.spanIndex.push(インデックス);
        this.show2 = true;
      }
      
      console.log("インデックス配列", this.spanIndex);
    },
 
    secondClick(インデックス) {
      コンソールログ(インデックス);
      // 現在のインデックス = インデックス
      this.currIndex2 = インデックス;
      // 現在のインデックスがインデックス配列 spanIndex 内にあるかどうかを判断します。 arrIndex に指定できる値は 2 つだけです: -1 が見つかりません。 0件見つかりました。
      this.arrIndex2 = this.spanIndex2.indexOf(インデックス);
      console.log("arrIndex2", this.arrIndex2);
 
      (this.arrIndex2 == 0)の場合{
        //arrIndex == 0 の場合、インデックスが見つかり、インデックス配列 spanIndex 内のインデックスが削除され、セカンダリ ナビゲーションが非表示になります。
        this.spanIndex2.splice(this.arrIndex2、1);
        this.show3 = false;
      } それ以外 {
        // arrIndex ==-1、見つからない、splice(-1,1) は spanIndex 配列の末尾から 1 つの値を削除し、現在のインデックスをインデックス配列 spanIndex に追加します。show2 は true で、セカンダリ ナビゲーションを表示します。
        this.spanIndex2.splice(this.arrIndex2、1);
        this.spanIndex2.push(インデックス);
        this.show3 = true;
      }
       console.log("インデックス配列2", this.spanIndex2);
    },
  },
};
</スクリプト>
 
<スタイル>
p {
  パディング: 5px 0;
  マージンブロック開始: 0;
  マージンブロック終了: 0;
}
#アプリ {
  フォントファミリー: Avenir、Helvetica、Arial、sans-serif;
  -webkit-font-smoothing: アンチエイリアス;
  -moz-osx-font-smoothing: グレースケール;
  テキスト配置: 中央;
  色: #2c3e50;
  上マージン: 60px;
}
。初め {
  幅: 200ピクセル;
  フォントサイズ: 24px;
  フォントの太さ: 太字;
  /* 高さ: 60px; */
  /* 背景:赤; */
}
.first:hover {
  カーソル: ポインタ;
 
  /* 色:赤; */
}
。2番 {
  フォントサイズ: 18px;
  フォントの太さ: 標準;
  背景: #eee;
  左マージン: 50px;
}
。三つ {
  背景: 黄色;
  左マージン: 20px;
  フォントサイズ: 14px;
}
</スタイル>

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

以下もご興味があるかもしれません:
  • Vueで一部のルーティングページのナビゲーションバーを非表示にする機能を実装する
  • Vue ルーティング メタ セット ナビゲーションの非表示と表示機能のサンプル コード
  • Vue のボトムナビゲーションを動的に表示および非表示にする手法の分析

<<:  NavicatがMySQLに接続すると、10060、1045エラーとmy.iniの場所が報告されます。

>>:  Python Flask WeChat アプレットのログインプロセスとログイン API 実装コード

推薦する

MySQLインデックスに関する重要な面接の質問をいくつか共有します

序文インデックスは、データベース内の 1 つ以上の列の値を並べ替え、データベースが効率的にデータを取...

Vue 名前付きスロットの基本的な使用例

序文名前付きスロットは、スロット内の「name」属性を使用して要素にバインドされます。知らせ: 1....

Javascript 共通高階関数の詳細

目次1. 一般的な高階関数1.1、フィルター1.2、地図1.3、減らすHigher Order fu...

Web デザインでフラッシュ オーバーレイ ポップアップ レイヤーの z-index プロパティを設定しても機能しない

デフォルトでは、Flash は常にページのトップレベルに表示されます。つまり、ページに DHTML ...

Raspberry Pi 4b ubuntu19 サーバーへの docker-ce のインストール手順

Raspberry Pi モデルは 4b、1G RAM です。システムはubuntu19.10サーバ...

初心者向け入門講座⑧:記事サイトを簡単に作る

前回の投稿では、Web ページの作成方法について説明しました。Web サイトは多くの Web ページ...

MySQLは効率的なインデックス例分析を確立する

この記事では、例を使用して、MySQL で効率的なインデックスを作成する方法について説明します。ご参...

ウェブデザイン研究における XHTML の応用の概要

<br />一般的に、「標準的な Web ページ」のファイル構成は XHTML CSS ...

LeetCode の SQL 実装 (177. 給与が N 番目に高い)

[LeetCode] 177. 最も高い給与従業員テーブルからn番目に高い給与を取得する SQL ...

divとtableの選択と組み合わせ方について簡単に説明します

ページレイアウトは、Web ページを扱い始めた頃からずっと気にかけていたことです。初期のテーブル構造...

Vue は書籍管理ケースを実装します

この記事では、書籍管理を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は次の...

JavaScript データ型の詳細な説明

目次1. リテラル1.1 数値リテラル1.2 浮動小数点リテラル1.3 特別な値1.4 文字列リテラ...

Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

1: Dockerプライベートウェアハウスのインストール1. イメージリポジトリからイメージをダウン...