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 パッケージを起動してバックグラウンドで実行する方法

推薦する

MySQL における主キーが 0 であることと主キーの自己選択制約の関係についての詳しい説明 (詳細)

序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...

webpackコード断片化の実装

目次背景コモンズチャンクプラグイン分割チャンク構成リソースを非同期に読み込む要約する背景高性能なアプ...

ログインフォームを実装するためのReactサンプルコード

Vue ユーザーとして、React を拡張する時が来ました。antd の導入、less と rout...

CSS 複合セレクタの具体的な使用法

交差点セレクター交差セレクターは、直接接続された 2 つのセレクターで構成されます。最初のセレクター...

Dockerコンテナイメージからコードを復元する手順

コードが失われ、コンテナ内で実行されているイメージから必要なコードを回復する必要がある場合があります...

MySQL 接続失敗の一般的な障害と原因

==================================================...

フレックスマルチカラムレイアウトで発生する問題と解決策の詳細な説明

フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...

MySQL 8.0 のユーザーとロールの管理原則と使用方法の詳細

この記事では、MySQL 8.0 のユーザーとロールの管理について例を挙げて説明します。ご参考までに...

Linuxの一般的なコマンドでLinuxのmoreコマンドを使用する方法

more は、最もよく使用されるツールの 1 つです。最も一般的な使用方法は、出力コンテンツを表示し...

CSSでフォントアイコンを使用する方法をお教えします

まず、フォントアイコンとは何でしょうか?表面的にはアイコンですが、実際はテキストです。テキストの設定...

vite2.0 設定学習の詳しい説明(typescript 版)

導入悠宇希の原文です。 vite は Vue CLI に似ています。vite も、基本的なプロジェク...

JavaScript デザインパターン 責任連鎖パターン

目次概要コードの実装パラメータ定義成し遂げる責任連鎖パターンの実装改善概要責任チェーン パターンは、...

Mysql5.6.36 スクリプトのコンパイル、インストール、初期化のチュートリアル

概要この記事は、centos7.3 上で mysql5.3.6 を自動的にコンパイルしてインストール...

MySQL NULLデータ変換方法(必読)

MySQL を使用してデータベースをクエリし、左結合を実行すると、関連付けられたフィールドの一部に...

Redmine の Docker インストール手順

イメージをダウンロードします(オプションの手順です。省略した場合は、手順 3 と 4 で自動的にイン...