この記事の例では、画像拡大鏡効果を実現するためのVue3の具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。 成果を達成する コード <テンプレート> <div class="goods-image"> <!-- 大きな画像コンテナ --> <div クラス="large" :スタイル="[ { 背景画像: `url(${imageList[curId]})`, 背景位置X: position.backgroundPositionX、 背景位置Y: position.backgroundPositionY、 }, ]" v-if="isShow" </div> <div class="middle" ref="target"> <img :src="画像リスト[curId]" alt="" /> <!-- マスクコンテナ --> <div class="layer" :style="{ left: left + 'px', top: top + 'px' }" v-if="isShow"></div> </div> <ul class="small"> <li v-for="(img, i) が imageList 内にあります" :key="i" @mouseenter="curId = i" :class="{ アクティブ: curId === i }" > <img :src="画像" alt="" /> </li> </ul> </div> </テンプレート> <スクリプト> 'vue' から { reactive, ref, watch } をインポートします。 '@vueuse/core' から { useMouseInElement } をインポートします。 エクスポートデフォルト{ 名前: 'GoodsImage', 小道具: { 画像リスト: { タイプ: 配列、 デフォルト: () => { 戻る [] } } }, 設定 () { 定数curId = ref(0) 定数ターゲット = ref(null) // elementX: マウスの左側からのオフセット値 // elementY: テーブルの上部からのオフセット値 // isOutside: コンテナーの外側にあるかどうか (外側の場合は true、内側の場合は false) const { elementX, elementY, isOutside } = useMouseInElement(target) const left = ref(0) // スライダーから左までの距離 const top = ref(0) // スライダーから上までの距離 const isShow = ref(false) // 大きな画像とマスク画像の表示と非表示 const position = reactive({ // 大きな画像の表示位置、デフォルトは 0 背景位置X: 0, 背景位置Y: 0 }) 時計( //監視オブジェクト[elementX, elementY, isOutside]、 () => { 要素Xの値<100の場合{ // 左の最小距離 left.value = 0 } 要素Xの値> 300の場合{ 左の値 = 200 } 要素Xの値> 100 && 要素Xの値< 300の場合{ 左の値 = 要素Xの値 - 100 } 要素Yの値<100の場合{ // 左上の最小距離。値 = 0 } 要素Yの値> 300の場合{ 上位値 = 200 } 要素Yの値> 100 && 要素Yの値< 300) { 上部の値 = 要素Yの値 - 100 } // 背景画像の動きを制御します // 1. マスク レイヤーの移動方向は、背景画像の移動方向と逆になります // 2. マスク レイヤーと背景画像の面積比は 1:2 なので、マスク レイヤーが 1 ピクセル移動するごとに背景画像は 2 ピクセル移動します // backgrondPosition: x, y; position.backgroundPositionX = -left.value * 2 + 'px' 位置.背景位置Y = -top.値 * 2 + 'px' // isOutsideの値が変わったら、すぐにそれを否定してisShowに代入します // isOutside: コンテナの外側か? 外側の場合は true、内側の場合は false isShow.value = !isOutside.value }, {} ) 戻る { curId、 ターゲット、 左、 トップ、 位置、 表示 } } } </スクリプト> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: CentOS7 で MySQL のスケジュールされた自動バックアップを実装する方法
>>: Dockerイメージとコンテナの一般的な操作の詳細な説明
目次1. プラットフォームバスの紹介1.1. Linuxドライバの分離と階層化1.1.1. Linu...
inline-block について学習しているときに、境界線と inline-block を持つ複数...
Windows システム向け MySQL インストール チュートリアルダウンロード1. https:...
バックグラウンド コントローラー @RequestMapping("/getPDFStre...
目次1. フロントエンドの状態管理とは何ですか? 2. ヴュークス3. バス4. ウェブストレージ序...
最近Nginxを構築しているのですが、ドメイン名でアクセスできません。 nginx 構成ファイル n...
目次1. 機能紹介2. キーコード2.1 ホームページの機能2.2 製品情報を追加する2.3 データ...
目次1. ビューフック1. ngAfterViewInit および ngAfterViewCheck...
実際のプロジェクトでは、緊急事態を防ぐためにデータベースを頻繁にバックアップする必要があります。しば...
この記事では、参考までにMySQL 8.0.11のインストール手順を紹介します。具体的な内容は次のと...
MySQL は、ユーザーごとに 2 つの異なるバージョンを提供します。 MySQL コミュニティ サ...
仕事を探しています!!!事前準備:まず、このアニメーションは、以前のローディングアニメーションとクー...
バグ図のように、削除文とパラメータをデータベースにコピーして実行し、2つのデータを削除しようとしたの...
プレビューアドレス: https://ovsexia.gitee.io/leftfixed/ htm...
初め:コードをコピーコードは次のとおりです。 <input type="text&q...