まずケースを見てみましょう。vue+swiper を使用して実装します。スライドの高さが異なる場合、ボックスの高さが動的に計算され、その下の高さが適応されます。 まず、vue プロジェクトをビルドします。ここでは詳しく説明しません。次に、swiper をインストールします。 npm インストール swiper --save-dev 1. js 部分: スワイパー コンポーネントを初期化します。vue はマウントされたライフサイクルで初期化する必要があります。コードは次のとおりです。 'swiper' から Swiper をインポートします 'gsap' から { TweenMax, Power2 } をインポートします resize関数は初期化中に呼び出され、画面コンテナの幅と高さを計算します。コードは次のとおりです。 // 画面の幅と高さを再計算 resize(swiper) { this.clientWidth = document.documentElement.clientWidth||document.body.clientWidth; this.clientHeight = document.documentElement.clientHeight||document.body.clientHeight; this.draw(スワイパー) }, 計算後、draw関数が呼び出され、スライドに応じてカルーセルコンテナの高さが動的に計算されます。ここで参照されているTweenMaxフレームワークは、使用前にインストールする必要があります。詳細な使用方法については、公式サイトTweenMaxを参照してください。 npm インストール gsap -D まずはTweenMaxの使い方を見てみましょう。 // スワイパーコンテナの高さを動的に計算する draw(swiper) { TweenMax.to(this.tweenObj, 0.5, {translate: swiper.translate, イーズ: Power2.easeOut, 更新時: () => { translate = this.tweenObj.translate とします。 // 左スライドのインデックス let iLeft = Math.floor(-translate / this.clientWidth) if (iLeft > this.slidesLength) { iLeft = this.slidesLength } // 右スライドのインデックス let iRight = iLeft + 1 if (iRight > this.slidesLength) { iRight = this.slidesLength } for(let i=0; i< this.swiperSlide.length; i++){ //画像の幅が全画面の場合、各画像の高さ this.swiperSlide[i].fullHeight = this.clientWidth/this.swiperSlide[i].getBoundingClientRect().width * this.swiperSlide[i].getBoundingClientRect().height; } //移動比率移動中の高さは0から1、そして0に変化します。let percent = Number((-translate / this.clientWidth).toFixed(5)) - iLeft // 左と右の画像と移動比率に応じて、対応する高さを取得します。let currentHeight = (this.swiperSlide[iRight].fullHeight - this.swiperSlide[iLeft].fullHeight )*percent + this.swiperSlide[iLeft].fullHeight // カルーセル コンテナの高さ swiper.el.style.height = currentHeight + 'px' } }) } 2.html部分 <!--Ctrip のカルーセル効果を模倣--> <div class="swiper-demo"> <div class="スワイパーコンテナ"> <div class="スワイパーラッパー"> <!-- ここで高さを増やす必要があります。そうしないと問題が発生します。 ! ! --> <div class="スワイパースライド" style="height: 222px;"> <div class="wrap" v-for="(item, index) in category1" :key="index"> <img src="../assets/wish.png" alt=""> <span>{{アイテム名}}</span> </div> </div> <!-- ここで高さを増やす必要があります。そうしないと問題が発生します。 ! ! --> <div class="swiper-slide" style="height: 400px;"> <div class="wrap" v-for="(item, index) in category2" :key="index"> <img src="../assets/wish.png" alt=""> <span>{{アイテム名}}</span> </div> </div> </div> </div> <div style="background: salmon; height: 80vh">独自の UI を作成する</div> </div>
3.css部分 .スワイパースライド{ 幅: 自動; 高さ: 100%; ディスプレイ: フレックス; flex-wrap: ラップ; コンテンツの両端揃え: スペースの間; } 。包む { 幅: 24%; 高さ: 100px; ディスプレイ: フレックス; flex-direction: 列; アイテムの位置を中央揃えにします。 コンテンツの中央揃え: 中央; } 画像 { 幅: 60ピクセル; } この方法で、適応性の高いカルーセル効果が得られます。3つ以上のカルーセルでも問題ありません。気に入ったらフォローしてください。笑〜 これで、Vue 模倣 Ctrip カルーセル効果 (スライディング カルーセル、以下は高度に適応) に関するこの記事は終了です。より関連性の高い Vue カルーセル コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 開発環境にUbuntu 16をインストール後の初期設定
>>: MySQL の重要なパフォーマンス インデックスの計算と最適化方法の概要
1. MySQLサービスをシャットダウンする# service mysqld stop 2. rpm...
序文この記事を書いた主な理由は、チームリーダーが、ブラウザを使用してコンピューターのカメラを呼び出し...
MySQL 8.0.12のインストールと設定方法を記録してみんなで共有します。 1. インストール1...
目次前面に書かれた複数のストレージマウント方法1.バインドマウント2. 巻数3.tmpfsマウントス...
Google の Flutter の目標は、どのプラットフォームを使用していても、ネイティブの速度...
目次プロセスコミュニケーションプロセス間の双方向通信問題要約するサードパーティのデータ サプライヤー...
テーブルを作成テーブルテーブル名を作成create table if not exists 表名 m...
この記事では、CSSの透明な境界線の背景クリップの素晴らしい使い方を主に紹介し、みんなと共有し、自分...
2つの状況がある1. 開始時間と終了時間が同じボックス内にあります(今月のみ限定) 2. 開始時間と...
現在のデータベースでサポートされているエンジンを表示します エンジンを表示 +-----------...
効果使用する場合は、コードとスタイルを自分で最適化してください。画像を表示しない/ビデオとオーディオ...
目次ツリー項目にコードを追加します。 1. 右側に関連情報ページを保存します(userManage....
目次質問背景アイデアと実装質問次のように、同時実行 Promise の数を制御するメソッドを記述する...
雑談はここまでにして、インターネット上で見つかる高性能な Yahoo ウェブサイトを構築するための数...
HTMLとは何ですか?簡単に言えば、HTML は Web ページを作成するために使用されます。とて...