Vueはシンプルな虫眼鏡効果を実装します

Vueはシンプルな虫眼鏡効果を実装します

この記事では、参考までに、簡単な虫眼鏡効果を実現するためのVueの具体的なコードを紹介します。具体的な内容は次のとおりです。

<テンプレート>
    <div>
        <div class="imgMerror">
            <div class="smallDiv" @mousemove="move($event)" @mouseenter="enter()" @mouseleave="leave()">
                <img src="/image/2017/07/26/0d6069de4916471b92da66b0da8f0ec9.jpg" alt="">
                <div class="imgMask"></div>
            </div>
            <div class="bigDiv">
                <img src="/image/2017/07/26/0d6069de4916471b92da66b0da8f0ec9.jpg" alt="" class="bigImg">
            </div>
        </div>
    </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
    データ() {
        戻る {
            
        }
    },
    メソッド: {
        入力(){
            imgMaskDom を document.querySelector('.imgMask') とします。
            bigDivDom を document.querySelector('.bigDiv') とします。
            imgMaskDom.style.display = 'ブロック';
            bigDivDom.style.display = 'ブロック';
        },
        離れる(){
            imgMaskDom を document.querySelector('.imgMask') とします。
            bigDivDom を document.querySelector('.bigDiv') とします。
            imgMaskDom.style.display = 'なし';
            bigDivDom.style.display = 'なし';
        },
        移動する{
            smallDivDom を document.querySelector('.smallDiv') とします。
            imgMaskDom を document.querySelector('.imgMask') とします。
            bigDivDom を document.querySelector('.bigDiv') とします。
            bigImgkDom を document.querySelector('.bigImg') にします。
 
            ev = e || window.event とします。
            左を ev.clientX - smallDivDom.offsetLeft - imgMaskDom.offsetWidth/2 とします。
            top を ev.clientY - smallDivDom.offsetTop - imgMaskDom.offsetHeight/2 とします。
            左が0以下の場合、左は0になります。
            if (left > smallDivDom.offsetWidth - imgMaskDom.offsetWidth) {
                左 = smallDivDom.offsetWidth - imgMaskDom.offsetWidth;
            }
            上端が 0 の場合、上端は 0 です。
            if(top > smallDivDom.offsetHeight - imgMaskDom.offsetHeight){
                上部 = smallDivDom.offsetHeight - imgMaskDom.offsetHeight;
            }
            imgMaskDom.style.left = left + 'px';
            imgMaskDom.style.top = top + 'px';
 
            //比率を移動します let precentX = left / (smallDivDom.offsetWidth-imgMaskDom.offsetWidth);
            precentY を top / (smallDivDom.offsetHeight - imgMaskDom.offsetHeight) とします。
            bigImgkDom.style.left = precentX * (bigDivDom.offsetWidth - bigImgkDom.offsetWidth) + 'px';
            bigImgkDom.style.top = precentY * (bigDivDom.offsetHeight - bigImgkDom.offsetHeight) + 'px';
 
        }
    },
}
</スクリプト>
 
<スタイル lang="scss">
    *{
        マージン: 0;
        パディング: 0;
    }
    .imgMエラー{
        位置: 相対的;
        パディング: 50px;
        .smallDiv{
            境界線: 1px 実線 #ccc;
            幅: 360ピクセル;
            高さ: 360ピクセル;
            位置: 相対的;
            左: 0;
            上: 0;
            画像{
                幅: 100%;
                高さ: 100%;
            }
            .imgマスク{
                幅: 240ピクセル;
                高さ: 240px;
                背景: #00ff98;
                不透明度: 0.5;
                カーソル: 移動;
                位置: 絶対;
                左:0;
                上: 0;
                表示: なし;
            }
        }
        .bigDiv{
            境界線: 1px 実線 #ccc;
            幅: 540ピクセル;
            高さ: 540px;
            位置: 相対的;
            左: 380ピクセル;
            上: -360px;
            オーバーフロー: 非表示;
            表示: なし;
            画像{
                幅: 600ピクセル;
                高さ: 600px;
                位置: 絶対;
                左: 0;
                上: 0;
            }
        }
    }
</スタイル>

効果画像:

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueは製品の拡大鏡効果を実現します
  • Vue3 カプセル化された虫眼鏡コンポーネントのサンプルコード
  • Vue3は画像拡大鏡効果を実現します
  • Vueは商品詳細ページの虫眼鏡機能を実装します
  • Vueはタブ切り替えの虫眼鏡効果を実装します
  • Vueは虫眼鏡付きの検索ボックスを実装します
  • Vue3.0 手書き拡大鏡効果
  • Vue が虫眼鏡効果を実装
  • 手書きのVue拡大鏡効果
  • Vue3はJingdong製品詳細ページの虫眼鏡効果コンポーネントをカプセル化します

<<:  LinuxはRsync+Inotifyを使用してローカルとリモートのデータのリアルタイム同期を実現します。

>>:  MySQL ストアド プロシージャのエラー処理例の詳細な説明

推薦する

jQueryはアコーディオン効果を実装します

この記事では、アコーディオンを実装するためのjQueryの具体的なコードを参考までに紹介します。具体...

React Diff Principle の詳細な分析

目次差分アルゴリズムレイヤーごとの比較同じタイプのコンポーネントを比較する同じタイプの要素の比較子ノ...

要素テーブルテーブルコンポーネントの複数フィールド(複数列)ソート方法

目次必要:発生した問題:解決する:必要:要素テーブル内の複数の列を並べ替えるには、日付の並べ替えをク...

W3C チュートリアル (11): W3C DOM アクティビティ

ドキュメント オブジェクト モデル (DOM) は、プログラムがドキュメントのコンテンツ、構造、およ...

シンプルなタブバー切り替えコンテンツバーを実装するJavaScript

この記事では、タブバーの切り替えコンテンツバーを簡単に実現するためのJavaScriptの具体的なコ...

MySQLで数千万のテストデータを素早く作成する方法

述べる:この記事で扱うデータ量は 100 万です。数千万のデータが必要な場合は、量を増やすだけで済み...

Vue2.x の応答性の簡単な説明と例

1. Vue レスポンシブの使用法を確認する​ Vue の応答性は、私たち全員がよく知っています。 ...

32 典型的な列/グリッドベースのウェブサイト

列ベースの Web デザインのインスピレーションをお探しの場合は、32 個のクラシックな列/グリッド...

MYSQL マスタースレーブ レプリケーションの知識ポイントの概要

単一の MYSQL サーバーが現在の Web サイトのトラフィックに対応できない場合の最適化ソリュー...

CSS を使用して半透明の背景と不透明なテキストを実現する例

この記事では、CSS を使用して半透明の背景と不透明なテキストの効果を実現する方法の例を紹介します。...

HTMLページ間でパラメータを渡すフロントエンド方式の詳細な説明

プロジェクトでよくある状況として、案件リストなどのリストが存在することがあります。リスト内の項目をク...

HTML で 2 つの div タグの間に垂直線を描く方法

最近、インターフェースを描画しているときに、インターフェースに垂直線を描画し、この垂直線の高さが親 ...

Linux でアップロードされたファイルのスケジュールされたバックアップと増分バックアップを実装する方法

導入Alibaba Cloud のような OSS ストレージ サービスを使用している場合は、サービス...

Hyper-V インストール CentOS 8 の問題の分析

CentOS 8 がリリースされてから随分経ちました。Linux 仮想マシンをいじっている人間として...

BFCとは何ですか? CSS 疑似要素を使用してフロートをクリアする方法

BFCコンセプト:ブロック フォーマット コンテキストは、BFC 内の要素を外部の要素から分離する独...