この記事の例では、製品の拡大鏡効果を実現するためのVueの具体的なコードを共有しています。具体的な内容は次のとおりです。 1. はじめにライブストリーミングやセルフサービスショッピングが盛んなこの電子商取引の時代に、私たちは商品に対する理解を深め、さらに詳細を確認しました。そして、商品を拡大できることを発見しました。そこで、フロントエンド技術のVueフレームワークを使用して、虫眼鏡に似た機能を作成しました。 2. 実装のアイデア元画像(左)の表示スペースについては、画像行を保護するために、img を canvas に置き換えることができます。 3. エフェクト表示4. 具体的な実装ロジックコードテンプレート(画像パスを変更することを忘れないでください) <テンプレート> <div> <div class="left"> <img class="leftImg" src="../../src/assets/curry.jpg" alt="" /> <!-- マウスレイヤーカバー--> <div v-show="topShow" class="top" :style="topStyle"></div> <!-- 最上位レイヤーは透明なレイヤーで元の画像スペース全体を覆います --> <div クラス="maskTop" @mouseenter="enterHandler" @mousemove="moveHandler" @mouseout="outHandler" </div> </div> <div v-show="rShow" class="right"> <画像 :style="r_img" クラス="rightImg" src="../../src/assets/curry.jpg" 代替案="" /> </div> </div> </テンプレート> スタイル CSS <スタイルスコープ> /* 画像を拡大し、左上隅を (0,0) に配置します */ .rightImg{ 表示: インラインブロック; 幅: 800ピクセル; 高さ: 800ピクセル; 位置: 絶対; 上: 0; 左: 0; } /* 右側の画像ズームスペース */ 。右 { 左マージン: 412px; 幅: 400ピクセル; 高さ: 400px; 境界線: 1px 実線の赤; 位置: 相対的; オーバーフロー: 非表示; } /* トップレベルのマスク */ .マスクトップ{ 幅: 400ピクセル; 高さ: 400px; 位置: 絶対; zインデックス: 1; 上: 0; 左: 0; } /* レイヤーマスク、左上隅を (0,0) に配置します */ .トップ{ 幅: 200ピクセル; 高さ: 200px; 背景色: ライトコーラル; 不透明度: 0.4; 位置: 絶対; 上: 0; 左: 0; } /* 元の画像の表示 */ .leftImg{ 幅: 400ピクセル; 高さ: 400px; 表示: インラインブロック; } /* 元の画像のコンテナ */ 。左 { 幅: 400ピクセル; 高さ: 400px; 境界線: 1px 青緑色 フロート: 左; 位置: 相対的; } </スタイル> スクリプトコアjs <スクリプト> エクスポートデフォルト{ データ() { 戻る { トップスタイル: { 変換: "" }, 画像: {}, トップ表示: false, r表示: false、 }; }, メソッド: { // マウスが元の画像空間に入る function enterHandler() { // レイヤーマスクと拡大されたスペースの表示 this.topShow = true; this.rShow = true; }, // マウス移動関数moveHandler(event) { // マウスの座標位置 let x = event.offsetX; y = event.offsetY とします。 // レイヤーマスクの左上隅の座標位置と制限: 元の画像領域の左上隅を超えることはできません。let topX = x - 100 < 0 ? 0 : x - 100; topY = y - 100 < 0 ? 0 : y - 100 とします。 // レイヤーマスクの位置を再度制限して、レイヤーマスクが元の画像領域内にのみ収まるようにします if (topX > 200) { 上X = 200; } (topY > 200) の場合 { 上Y = 200; } // 変換を通じて制御を移動します this.topStyle.transform = `translate(${topX}px,${topY}px)`; this.r_img.transform = `translate(-${2 * topX}px、-${2 * topY}px)`; }, // マウスアウト関数 outHandler() { //レイヤーカバーと拡大スペースの非表示を制御します this.topShow = false; this.rShow = false; }, }, }; </スクリプト> V. まとめと考察当初は元の画像コンテナの左側に 3 つのマウス イベントを追加しましたが、問題は発生し続けました。 1. 虫眼鏡を完全に実現するために、マウス領域を覆う透明なマスクトップを追加しました。このマスクトップレイヤーを追加しないと、マウスが元の画像領域に入ると、マウスマスクはマウスと一緒に移動せず、マウスが移動すると高周波で振動します。右側の拡大領域はスムーズに動きません。 2. マスクトップレイヤーが追加されていない場合、マウスを元の画像領域に移動すると、マウスレイヤーマスクがマウスをブロックするため、マウス移動イベントは1回しか実行されません。 3. 以前、マウスマスクの初期位置を動的に決定し、mouseenter イベントに組み込むことを試みました。その結果、mouseenter イベントが mousemove イベントになったかのように異常に何度も実行されました。 他の虫眼鏡のケースも見たことがありますが、トップレベルのオーバーレイ マスクを追加する必要はありません。通りすがりの誰かがこの問題の解決を手伝ってくれることを願っています。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Nginx設定の原理と実装プロセスの詳細な説明https
>>: MySQLクエリ時にフィールドにデフォルト値を割り当てる方法
目次テーブルの目的例えばテーブル分割戦略すでにオンラインになっている実行中のテーブルはどうすればよい...
質問があります。Dreamweaver で、3 行 1 列のログイン フォーム (ログイン、登録、パ...
コンピュータに初めて MySQL をインストールする場合、通常このエラー メッセージは表示されません...
来学期にMySQLを勉強します。事前に自宅で練習していませんでした。インストールに時間がかかるとは思...
JavaScript を使用して Web ページ クロックを実装します。効果は次の図に示されています...
目次1. セットアップ1. セットアップ関数の最初のパラメータ - props 2. 文脈2. セッ...
早朝に MySQL 5.7.19 のインストールを終えたばかりですが、午前中に MySQL が最新バ...
この記事では、MySQL の整合性制約について説明します。ご参考までに、詳細は以下の通りです。メイン...
Dockerでnginxをデプロイするのはとても簡単ですたった 1 行のコマンド: docker 実...
目次1. 電卓機能の紹介2. 計算機ページのデザイン1. ナビゲーションバー2. データ部分3. i...
レスポンシブデザインとは、ウェブサイトの開発プロセス中に、ユーザーの操作やデバイス環境に応じて対応す...
Ubuntu が今日のデスクトップ ユーザーの間で最も人気のある Linux オペレーティング シス...
HTML デザインパターン学習ノート今週は主にHTMLデザインパターンを学びました。学習内容をまとめ...
この記事ではMySQL 8.0.24バージョンのインストールと設定方法を記録し、皆さんと共有しますM...
これらの 3 つのタグを間違った方法で使用して、タイトルを表に沿わせたり、tbody の高さを固定し...