Vue は Ctrip のカルーセル効果を模倣します (スライディング カルーセル、以下は高度に適応)

Vue は Ctrip のカルーセル効果を模倣します (スライディング カルーセル、以下は高度に適応)

まずケースを見てみましょう。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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueは画像カルーセルコンポーネントのアイデアと例の分析を実装します
  • DOMを操作せずにVueで画像カルーセルを実装するサンプルコード
  • Vue カスタム js 画像フラグメント カルーセル切り替え効果実装コード
  • Vueを使用して画像カルーセルコンポーネントを作成するアイデアの詳細な説明
  • VueはSwiperをカプセル化して画像カルーセル効果を実現します
  • Vue を使用してモバイル画像カルーセル コンポーネントを実装する方法の例
  • vueJs を使用して画像カルーセルを実装するサンプルコード
  • VUEは画像カルーセルコンポーネントのサンプルコードを開発します
  • vue.js をベースに画像カルーセル効果を実現する
  • Vue は自動スライドカルーセル画像を実装します

<<:  開発環境にUbuntu 16をインストール後の初期設定

>>:  MySQL の重要なパフォーマンス インデックスの計算と最適化方法の概要

推薦する

js、css、htmlはブラウザのさまざまなバージョンを決定します

正規表現を使用してIEブラウザのバージョンを判別するIEブラウザかどうか確認するif (docume...

VMware12.0 インストール Ubuntu14.04 LTS チュートリアル

私は、デスクトップ バージョンとサーバー バージョンの両方で、仮想マシンにさまざまなイメージを何度も...

HTML テーブルタグと関連する改行の問題の詳細な分析

テーブルとは何ですか?テーブルは、データのキャリアである HTML テーブルです。以下は比較的標準的...

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...

Java は Excel から MySQL にデータをインポートします

実際の業務では、Excel からデータベースにデータをインポートする必要がある場合があります。データ...

git bash を使用して Linux にログインするための ssh の設定方法

1. まず、Linux サーバー上で公開鍵ファイルと秘密鍵ファイルを生成します。デフォルトの保存ディ...

Windows10のマウスを模倣して境界線を光らせる効果を実現するCSSの詳細解説

最新の Windows 10 アップデートをインストールした後、システム UI の詳細な効果が顕著に...

Linux FTP匿名アップロードとダウンロードが自動的に開始される問題を解決する

勉強や仕事で FTP サーバーを頻繁に使用する場合は、起動時に自動的に起動するように設定できます。設...

MySQL のインデックスの種類と基本的な使用例

目次索引- 総合索引- ユニークなインデックス- 主キーインデックス- 複合インデックス- 全文索引...

Vueはコードのハイライトを実現するためにモナコを使用しています

Vue 言語と要素コンポーネントを使用して、コード コンテンツの入力を必要とし、ハイライト表示が可能...

VMware 仮想マシン (CentOS7 イメージ) を使用して Linux をインストールする

1. VMwareのダウンロードとインストールリンク: https://www.jb51.net/s...

insert と select を組み合わせて、「データベース内のフィールドの最大値 + 1 を挿入する」メソッドを実装する

この記事はmysqlデータベースです質問 1 表 1 のデータを表 2 にインポートします。表 1 ...

Alpine イメージに Ansible サービスを追加する方法

apk add ansible を使用して、alpine イメージに ansible サービスを追加...

有名なブログの再設計例 28 件

1. Webデザイナーウォール 2. Veerleのブログ 3. チュートリアル9 4. UXブース...

ページコンテンツ全体を中央に配置して、高さがコンテンツに合わせて自動的に拡張されるようにする方法

ページコンテンツ全体を中央に配置する方法と、コンテンツに合わせて高さを自動的に拡大縮小する方法。これ...