この記事では、シームレスなカルーセル効果を実現するための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 パッケージを起動してバックグラウンドで実行する方法
問題の説明:デスクトップ コンピューターとキャンパス ネットワークを使用して、有線モードでインターネ...
成果を達成する 実装コードhtml <div id=コンテナ> いらっしゃいませ <...
環境ホストIP 192.168.0.9 Docker バージョン 19.03.2 docker-co...
1. テーブルAのデータを使用してMySQLのテーブルBの内容を更新するたとえば、データ テーブル内...
Mysqlはブール型を設定します1. Tinyintタイプテストテーブルを作成し、blフィールドをブ...
実はこれもクリックベイトのタイトルであり、「派手」とは言えません。ただ私が無知で、こうしたラベルを見...
さっそく、コードを見てみましょう(初心者:特に言うことはありません) <!DOCTYPE ht...
1. イベントの簡単な紹介イベントは、MySQL が特定の時間に呼び出す手続き型データベース オブジ...
以下の手順に従ってください1. request.jsコンテンツ: http リクエスト インターセプ...
まず、MySQLをskip-grant-tablesモードで起動します: mysqld --skip...
目次1. テストデータ2. ヌル値による不便3. スペース、空の値、null をどのように判断すれば...
この記事では、参考までに、Vuex の具体的なコードを共有して、簡単なショッピングカートを実装します...
この記事の例では、マウスに従ってボールを動かすjsの具体的なコードを参考までに共有しています。具体的...
目次ルーティングとは純粋コンポーネントの基本的な使用純粋なコンポーネントの使用に関する注意事項ルーテ...
1. ファントムリーディングとは何ですか?トランザクションにおいて、複数のクエリの後に結果セットの数...