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 の重要なパフォーマンス インデックスの計算と最適化方法の概要

推薦する

Ubuntu 18.04 (コミュニティ エディション) に Docker CE をインストールする方法

古いバージョンをアンインストールする以前に古いバージョンをインストールしたことがある場合は、まずそれ...

js でショッピングモールのシミュレーションを実現

HTML、CSS、JSフロントエンドを学習中の皆さん、今回はショッピングモールの事例の実装をシェアし...

ウェブページの画像を素早く表示する方法とテクニック

1. .jpg ではなく .gif を使用します。GIF は JPG に比べてサイズが小さくなります...

Linux ホスト上で複数の MySQL データベースを起動する方法

今日は、Linux ホスト上で 4 つの MySQL データベースを起動する方法について説明します。...

JSはカリキュラムタイムテーブルアプレット(スーパーカリキュラムタイムテーブルを模倣)を実装し、カスタムバックグラウンド機能を追加します

概要:市販されているいくつかのタイムテーブルソフトウェアから教訓を得ました。機能が複雑すぎるため、タ...

完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方

最新のパーフェクト アロエ ベラ ジェルのパッケージ ボックスには、赤いフォントで完璧な英語の文字が...

一般的なイベントを処理するための JavaScript の使用に関する詳細な説明

目次1. フォームイベント2. マウスイベント3. キーボードイベント4. 共通イベントメソッド(ウ...

HTML+CSS+JS でスタックカルーセル効果を実装するサンプルコード

効果:スライドショーが一方向に動く場合、各画像のサイズ、位置、透明度、レベルを変更する必要があります...

ラジオボタンと複数選択ボタンは画像を使用してスタイル設定されます

ラジオ ボタンや複数選択ボタンにスタイルを追加する方法や、ボタンを大きくする方法を尋ねる人を以前見か...

MySQL 8.0 の新しいリレーショナル データベース機能の詳細な説明

序文MySQL 8.0 の最新バージョンは 8.0.4 rc であり、正式版は近日中にリリースされる...

Vue で手ぶれ補正を実装するためのサンプルコード

手ぶれ防止: 繰り返しのクリックによるイベントのトリガーを防止まず、揺れとは何でしょうか? 震えるの...

今日と昨日の 0:00 タイムスタンプを取得する MySQL の例

以下のように表示されます。昨日: UNIX_TIMESTAMP(CAST(SYSDATE() AS ...

HTML に CSS を導入するいくつかの方法の紹介

目次1. HTMLタグ要素にCSSスタイルを直接埋め込む2. HTMLのheadセクションにおけるス...

MySQL Innodbインデックスの原理の詳細な説明

導入振り返ってみると、4年前、私がMySQLのインデックスについて学んでいたとき、先生はインデックス...

phpmyadmin を使用して MySQL 権限を設定する方法

目次ステップ 1: root ユーザーとしてログインします。ステップ 2: 新しいデータ テーブルを...