Vue はシームレスなカルーセル効果 (マーキー) を実現します

Vue はシームレスなカルーセル効果 (マーキー) を実現します

この記事では、シームレスなカルーセル効果を実現するためのVueの具体的なコードを例として紹介します。具体的な内容は次のとおりです。

1. まず、2 つの vue コンポーネント Sweiper.vue と SweiperItem.vue を作成します。

2. ページに 2 つのコンポーネントを導入し、v-model を使用して Sweiper.vue でパラメータを渡します ( v-model は実際にはデフォルトの属性値とデフォルトのイベント入力を持つ構文糖です)。
コードでは、v-model の selcted を通じて Sweiper (子コンポーネント) に値を渡しています。カルーセルが自動的に回転すると、子コンポーネントはinput イベントをトリガーして、表示する値を親コンポーネントに返します。

3. コアは、選択された値を SweiperItem に渡し、それが SweiperItem 内の名前値と等しい場合にどの画像を表示するかを決定することです。

<テンプレート>
  <div>
    <Sweiper v-model="選択済み">
      <!--v-model は構文糖衣であり、値イベントや入力イベントと同等です-->
      <Sweiper-item name="item1">
        <div class="item">
          <img :src="getImg('01')" alt="">
        </div>
      </スワイパーアイテム>
      <Sweiper-item name="item2">
        <div class="item">
          <img :src="getImg('02')" alt="">
        </div>
      </スワイパーアイテム>
      <スワイパーアイテム名="item3">
        <div class="item">
          <img :src="getImg('03')" alt="">
        </div>
      </スワイパーアイテム>
    </スワイパー>
  </div>
</テンプレート>
ここでの画像は、配列を v-for でループしていないので、その構造がわかります<script>
  「../components/Sweiper.vue」からSweiperをインポートします。
  「../components/SweiperItem.vue」からSweiperItemをインポートします。
  エクスポートデフォルト{
    名前: "mySweiper",
    コンポーネント:
      スワイパー、
      スワイパーアイテム
    },
    データ() {
      戻る {
        selected: "item1", //デフォルトは最初の項目です}
    },
    方法:{
      getImg(url){
        "img/"+url+".jpg" を返します
      },

    },
    マウントされた(){
      /*setInterval(()=>{
       this.selected="item2"
  },3000)
  この時点では、mounted は 1 回しか実行されないため、変更されません。Sweiper で監視リスナーを記述する必要があります}*/この手順は Sweiper コンポーネントに記述されているためコメント化されています}
</スクリプト>
<スタイル>
  。アイテム{
    /*境界線: 1px 黒一色;*/
  }
  .item>画像{
    幅: 100%;
    /*高さ: 0.1rem;*/
  }
</スタイル>

スワイパー

<テンプレート>
  <div class="スワイパー">
    <スロット></スロット>
  </div>
</テンプレート>
<スクリプト>

  エクスポートデフォルト{
    名前:「スワイパー」
    データ() {
      戻る {
        現在:''
      }
    },
    小道具:{
      価値:{
        タイプ:文字列、
        デフォルト:""
      },
    },
    マウントされた(){
      //自動カルーセル中に名前の値を検索し、indexOf メソッドを使用して現在のカルーセルの次のテーブルをトラバースします this.names=this.$children.map(child=>{
       子の名前を返す
      });
      this.showImg();
      this.paly()
    },
    方法:{
      表示画像(){
        this.current=this.value||this.$children[0].name;
        //現在のインスタンスの直接の子コンポーネント this.$children.map(vm=>{
          vm.selected = this.current
        })
      },

      淡い(){
        //カルーセルが再生されるたびに画像を調整します this.timer=setInterval(()=>{
          //indexOf は指定された文字列の最初の出現を返します const index = this.names.indexOf(this.current);
          newIndex=index+1 とします。
          //より厳密にする if (newIndex===this.names.length){
             新しいインデックス = 0;
          }
          this.$emit("input",this.names[newIndex])
        },3000)
      }
    },
    時計:{
      //値を監視し、変更があった場合は選択内容を変更する
      価値(){
        this.showImg()
      }
    },
    破棄する前に() {
      //列が破棄される前に clearInterval(this.timer)
    }
  };
</スクリプト>
<スタイル>
  .スワイパー{
    /*境界線: 1px 黒一色;*/
    幅: 100%;
    高さ: 4rem;
    オーバーフロー: 非表示;
    マージン: 0 自動;
    位置: 相対的;
  }
</スタイル>

スワイパーアイテム.vue

<テンプレート>
  <遷移>
    <div class="Sweiper-item" v-show="isShow">
      <スロット></スロット>
    </div>
  </トランジション>
</テンプレート>
<スクリプト>
  エクスポートデフォルト{
    名前:"SweiperItem",
    データ(){
      戻る {
        選択済み:""
      }
    },
    小道具:{
      名前:{
        タイプ:文字列、
        必須:true
      },
    },
    マウントされた(){

    },
    計算:{
      isShow(){
        this.selected===this.name を返します。
      }
    }
  };

</スクリプト>
<スタイル>
  .v-enter-active、.v-leave-active{
    遷移: すべて 1 線形;
  }
  .v-leave-to{
    変換:translate(-100%);
  }
  .v-enter{
    変換: translate(100%);
  }
  .v-enter-active{
    位置: 絶対;
    トップ:0;
    左: 0;
  }
</スタイル>

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

以下もご興味があるかもしれません:
  • Vue ベースのテキスト マーキー コンポーネント (npm コンポーネント パッケージ)
  • Vueはシンプルなマーキー効果を実装します
  • Vueはマーキースタイルのテキストの水平スクロールを実装します
  • Vueはマーキー効果を実装します
  • Vueはランニングライトのシンプルな効果を実現
  • タイマーを使用してマーキー効果を実現する Vue サンプルコード
  • Vueはシンプルなマーキーを実装する
  • マーキー効果を実現するためのJsとVUE
  • Vueはシンプルなマーキー効果を実装します
  • Vueマーキーコンポーネントの使い方の詳細な説明

<<:  Mysqlは日付範囲の抽出方法を指定します

>>:  Linux で jar パッケージを起動してバックグラウンドで実行する方法

推薦する

Vueはカスタムツリーコンポーネントを再帰的に実装します

この記事では、カスタムツリーコンポーネントを再帰的に実装するVueの具体的なコードを参考までに共有し...

Q&A: XML と HTML の違い

Q: xml と html の違いがわかりません。違いは何ですか? A: XMLと HTML の違い...

CentOS 6.4 MySQL 5.7.18 のインストールと設定方法のグラフィックチュートリアル

Centos6.4 で mysql5.7.18 をインストールするための具体的な手順が全員に共有され...

ブラインドの特殊効果を実現するネイティブJS

この記事では、ネイティブ JS で実装されたブラインドの特殊効果を紹介します。効果は次のとおりです。...

Docker デプロイメント Consul 構成プロセスの分析

コマンドを実行docker run -d --name consul -p 8500:8500 co...

vscodeカスタムvueテンプレートの実装

vscode エディタを使用して vue テンプレートを作成すると、新しい vue ファイルを作成す...

重複データの処理に関するMySQL学習ノート

MySQLは重複データを処理します一部の MySQL テーブルには重複レコードが含まれている場合があ...

Nginx でバージョン番号と Web ページのキャッシュ時間を非表示にする方法

Nginx の最適化 - バージョン番号と Web ページのキャッシュ時間を非表示にするバージョン番...

TSで最も一般的な宣言マージ(インターフェースマージ)

目次1. マージインターフェース1.1 非関数メンバー1.2 関数メンバー序文:今日お話ししたいのは...

MySQL 8.0 ディクショナリテーブル拡張の詳細な説明

MySQL のデータ ディクショナリは、データベースの重要なコンポーネントの 1 つです。INFOR...

CSS+SVGでBステーションの課金効果を実現するサンプルコード

困難SVG グラフィックの 2 つのマスクの作成まず、コード左側のピンク色のボックスの内容ですこれに...

vuex ベースのショッピングカート機能の実装

この記事の例では、ショッピングカート機能を実装するためのvuexの具体的なコードを参考までに共有して...

VMware 仮想マシンの 3 つのネットワーク方式と原則 (概要)

1. ブリッジ: デフォルトでは VMnet0 が使用されます1. 原則:ブリッジは、それぞれ 2...

Linux システムのシャットダウンコマンドの違いと使い方の詳細な説明

Linux システムのシャットダウン コマンドは何ですか? Liangxu Tutorial Net...

MySQL から Excel にテーブルデータをエクスポートする際の日時形式に関する簡単な説明

最近、MySQL を使用してテーブル データを Excel ファイルにエクスポートしました。MySQ...