この記事の例では、製品の拡大鏡効果を実現するための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クエリ時にフィールドにデフォルト値を割り当てる方法
この記事では、シンプルな HTML ビデオ プレーヤーを実装する方法を紹介し、皆さんと共有します。詳...
私が学習していたときに使用していたバージョンは比較的新しいものであり、インターネット上のチュートリア...
目次1. ルートの遅延読み込みとは何ですか? 2. ルートの遅延読み込みの使用1. ルートの遅延読み...
私はプロジェクトの展開にAlibaba Cloudから購入したCentOSを使用しています。最近、プ...
1. Centos7をダウンロードするダウンロードアドレス: https://mirrors.tun...
1. テーブル構造テーブル人id名前1あなた2あなた(スペース) 3あなた(スペース2つ) 2. ク...
PCIE には 4 つの異なる仕様があります。下の図でそのうちの 2 つを見てみましょう。マザーボー...
リストは、テーブルをコンテナーとして使用するテキストまたはグラフの形式として定義されます。商品の種類...
目次序文1. NJSモジュールをインストールする方法1: NJSモジュールを動的にロードする方法2:...
場合によっては、ジャンプを完了するために href の代わりにハイパーリンク <a> を...
CSS インポート方法 - インラインスタイルタグ属性を通じて、CSSのキーと値のペアがタグに直接書...
目次1. Lvsの紹介2. Lvs負荷分散モード2.1 NAT 2.2 ターン2.3 DRモード3....
目次React アップロードファイル表示の進行状況デモフロントエンドにReactアプリケーションを素...
Vue プロジェクトを開発する場合、さまざまなコンポーネント ページを表示するために切り替えることが...
Q: xml と html の違いがわかりません。違いは何ですか? A: XMLと HTML の違い...