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

推薦する

Ubuntuがインターネットに接続できない場合の解決策

問題の説明:デスクトップ コンピューターとキャンパス ネットワークを使用して、有線モードでインターネ...

シンプルな CSS テキストアニメーション効果

成果を達成する 実装コードhtml <div id=コンテナ> いらっしゃいませ <...

Docker-compose を使用して ELK をデプロイするためのサンプル コード

環境ホストIP 192.168.0.9 Docker バージョン 19.03.2 docker-co...

MySQL における単一テーブルと複数テーブル、およびビューと一時テーブルに対する Update と Select の違い

1. テーブルAのデータを使用してMySQLのテーブルBの内容を更新するたとえば、データ テーブル内...

Mysqlはブール型の演算を設定します

Mysqlはブール型を設定します1. Tinyintタイプテストテーブルを作成し、blフィールドをブ...

5つのクールで実用的なHTMLタグと属性の紹介

実はこれもクリックベイトのタイトルであり、「派手」とは言えません。ただ私が無知で、こうしたラベルを見...

シンプルなナビゲーションバー機能を実現するHTML+CSS

さっそく、コードを見てみましょう(初心者:特に言うことはありません) <!DOCTYPE ht...

mysql スケジュールタスク (イベント イベント) の詳細な説明

1. イベントの簡単な紹介イベントは、MySQL が特定の時間に呼び出す手続き型データベース オブジ...

Vueリクエストインターセプターの設定方法の詳しい説明

以下の手順に従ってください1. request.jsコンテンツ: http リクエスト インターセプ...

MAC で Mysql5.7.10 のルートパスワードを変更する方法

まず、MySQLをskip-grant-tablesモードで起動します: mysqld --skip...

MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ

目次1. テストデータ2. ヌル値による不便3. スペース、空の値、null をどのように判断すれば...

Vuexはシンプルなショッピングカートを実装します

この記事では、参考までに、Vuex の具体的なコードを共有して、簡単なショッピングカートを実装します...

JavaScript キャンバスはマウスの動きに合わせてボールを動かすことを実装します

この記事の例では、マウスに従ってボールを動かすjsの具体的なコードを参考までに共有しています。具体的...

5分でReactルーティングについてお教えします

目次ルーティングとは純粋コンポーネントの基本的な使用純粋なコンポーネントの使用に関する注意事項ルーテ...

MySQLがファントムリードを解決する方法の詳細な説明

1. ファントムリーディングとは何ですか?トランザクションにおいて、複数のクエリの後に結果セットの数...