この記事では、シームレスなカルーセル効果を実現するためのVueの具体的なコードを例として紹介します。具体的な内容は次のとおりです。 1. まず、2 つの vue コンポーネント Sweiper.vue と SweiperItem.vue を作成します。 2. ページに 2 つのコンポーネントを導入し、v-model を使用して Sweiper.vue でパラメータを渡します ( v-model は実際にはデフォルトの属性値とデフォルトのイベント入力を持つ構文糖です)。 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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Linux で jar パッケージを起動してバックグラウンドで実行する方法
序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...
目次背景コモンズチャンクプラグイン分割チャンク構成リソースを非同期に読み込む要約する背景高性能なアプ...
Vue ユーザーとして、React を拡張する時が来ました。antd の導入、less と rout...
交差点セレクター交差セレクターは、直接接続された 2 つのセレクターで構成されます。最初のセレクター...
コードが失われ、コンテナ内で実行されているイメージから必要なコードを回復する必要がある場合があります...
==================================================...
フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...
この記事では、MySQL 8.0 のユーザーとロールの管理について例を挙げて説明します。ご参考までに...
more は、最もよく使用されるツールの 1 つです。最も一般的な使用方法は、出力コンテンツを表示し...
まず、フォントアイコンとは何でしょうか?表面的にはアイコンですが、実際はテキストです。テキストの設定...
導入悠宇希の原文です。 vite は Vue CLI に似ています。vite も、基本的なプロジェク...
目次概要コードの実装パラメータ定義成し遂げる責任連鎖パターンの実装改善概要責任チェーン パターンは、...
概要この記事は、centos7.3 上で mysql5.3.6 を自動的にコンパイルしてインストール...
MySQL を使用してデータベースをクエリし、左結合を実行すると、関連付けられたフィールドの一部に...
イメージをダウンロードします(オプションの手順です。省略した場合は、手順 3 と 4 で自動的にイン...