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 におけるキープアライブ マルチレベル ルーティング キャッシュの問題

目次1. 問題の説明2. 原因分析3. 解決策4. 処理1. 問題の説明調整センターでは、最後の 2...

Ubuntu16.04にCUDA9.0をインストールするための詳細なチュートリアル

序文:この記事は、CUDA 9.0 をインストールした経験に基づいています。CUDA 9.0 は現在...

Zabbix ベースの Jenkins プロセス監視の詳細な説明

1. 監視アーキテクチャ図 2. 実装のアイデアJenkins に Metrics プラグインをイン...

MySQLマスタースレーブ遅延現象と原理の詳細な分析

1. 現象早朝、オンライン テーブルにインデックスが追加されました。テーブル内のデータ量が大きすぎた...

MySQL 5.6 から 5.7 にアップグレードする際のマスター スレーブ遅延問題のトラブルシューティング

最近、Zabbix データベースを MySQL 5.6 から 5.7 にアップグレードしたときに、マ...

JDBC を使用して MySQL を操作するための簡単な分析では、Class.forName("com.mysql.jdbc.Driver") を追加する必要があります。

導入データベースに接続するためにJDBCを使用することに慣れている場合は、データベースに接続するため...

vue-router 4 の使用例の詳しい説明

目次1. インスタンスをインストールして作成する2. vue-router4の新機能2.1 動的ルー...

docker mysqlの起動時に初期化SQLを実行する

1.Mysqlイメージを取得するdocker pull mysql:5.7 2. MySQLイメージ...

Vue バッチ更新 DOM 実装手順

目次シーン紹介深い応答性トリガーゲッターDep.targetを探すゲッターセッター要約するシーン紹介...

ウェブサイトレイアウトにおける CSS の計算関数 calc の例

calc は数値を計算するために使用される CSS 関数です。長さ、角度、時間などを計算できます。 ...

HTML 要素 (タグ) とその使用法

a : ハイパーリンクの開始位置または宛先位置を示します。頭字語: 単語の最初の文字からなる略語を示...

ubuntu15.10 での hadoop2.7.2 の詳細なインストールと設定

Linux での Hadoop インストール チュートリアルはインターネットや書籍に多数ありますが、...

Linux システムで Java 環境変数を設定する方法

Java環境変数を設定するここで、環境変数は etc/profile に設定され、つまり、すべてのユ...

JavaScript はドラッグ可能なモーダルボックスを実装します

この記事では、ドラッグ可能なモーダルボックスを実装するためのJavaScriptの具体的なコードを参...

VMware 仮想マシン ubuntu18.04 インストール チュートリアル

インストール手順1. 仮想マシンを作成する 2. [カスタム(詳細)]を選択し、[次へ]をクリックし...