この記事の例では、製品の拡大鏡効果を実現するための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クエリ時にフィールドにデフォルト値を割り当てる方法
1. CSSは左の固定幅と右の適応幅を実現します1. ポジショニング <!DOCTYPE ht...
目次序文環境インストールMySQLコンテナを作成して起動する思い出させるMySQLコンテナコマンドを...
目次ストアドプロシージャの概要ストアド プロシージャを使用する理由は何ですか?ストアドプロシージャの...
jQuery を使用してフェードインとフェードアウト効果を完成させる前に、まずいくつかのコードを理解...
Nginxのクロスドメイン設定は次のようには機能しません サーバー{ 聞く 80; server_n...
ネイティブ JS で実装したリアルタイム クロック エフェクトを共有します。エフェクトは以下のとおり...
目次1. NFS-Ganeshaの紹介2. NFS-Ganeshaの設定3. NFS-Ganesha...
ドッカーの作成 バージョン: '2' サービス: fastdfsトラッカー: ホスト...
目次序文iframeはサンドボックスを実装しますdiffメソッドを使用したサンドボックスの実装プロキ...
目次序文:特定の操作ステップ1: プレハブを準備するステップ2: オブジェクトプールを初期化するステ...
導入Docker-Compose プロジェクトは、Docker コンテナ クラスターの迅速なオーケス...
目次1. 開発環境から本番環境への移行2. 統一されたリクエストパスを設定する3. パッケージ化コマ...
この記事では、カスタムツリーコンポーネントを再帰的に実装するVueの具体的なコードを参考までに共有し...
MySQL 内部には至るところにキャッシュがあります。MySQL のソースコードを読むと、キャッシ...
現在、WeChatパブリックアカウントの運用活動が多く、写真を生成する必要があります。生成された写真...