js で虫眼鏡効果を実現するためのアイデアとコード

js で虫眼鏡効果を実現するためのアイデアとコード

この記事の例では、虫眼鏡効果を実現するためのjsの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

スタイル表示:

アイデア

まず、小さい写真と大きい写真の2つの写真を用意します。2つの写真は整数比を持ちます。

小さな画像の上に虫眼鏡スタイルを設定し、背景を透明色に設定します

親要素を大きな画像の外側に配置し、親要素を超える場合は非表示にします。サイズは、拡大部分が収まる程度にしてください。親要素と虫眼鏡スタイルの比率 = 大きな画像と小さな画像の比率。

マウスが小さい画像上で移動すると、マウスの座標を取得し、小さい画像上でのマウスの座標を取得し、対応する比率に従って大きい画像の座標を計算し、拡大された部分が親要素の可視範囲内になるように大きい画像を移動します。

コード

1.html部分

<div id="ボックス">
        <!-- toBig は虫眼鏡要素です -->
     <div id="toBig"></div>
        <!-- 小さい画像 -->
  <img src="img/05.jpg" id="smallImg" width="800px">
</div>
<div id="beBig">
        <!-- 大きな画像、比率は 1.5 倍 -->
  <img src="img/05.jpg" id="bigImg" width="1200px">
</div>

2.cssスタイル部分

 *{
          マージン: 0px;
          パディング: 0px;
            }    
            #箱{
             位置: 相対的;
             フロート: 左;
            }
   #toBig{
    幅: 80ピクセル;
    高さ: 80px;
    境界線: 1px の灰色
    背景色: 透明;
    位置: 絶対;
   }
   #大きくなろう{
    フロート: 左;
    オーバーフロー: 非表示;
    境界線: 1px の灰色
    位置: 相対的;
    左: 40px;
    上:325ピクセル;
   }
   #bigImg{
    位置: 絶対;
   }

3. スクリプト部分

<script type="text/javascript">
            // 小さい画像、大きい画像、虫眼鏡要素、大きい画像の親要素を取得します。var smallImg = document.querySelector("#smallImg");
   var bigImg = document.querySelector("#bigImg");
   var toBig=document.querySelector("#toBig");
   var beBig=document.querySelector("#beBig");
 
            /*ページが読み込まれたときに小さい画像と大きい画像の比率を計算します*/
            var q = 0;
   window.onload = 関数(){
    q=bigImg.offsetWidth/smallImg.offsetWidth;
                // 虫眼鏡の幅、高さ、比率に基づいて、表示される拡大コンテンツのサイズを計算します。beBig.style.width = toBig.clientWidth * q + "px";
    beBig.style.height = toBig.clientHeight * q + "px";
   }
            // 虫眼鏡要素の中心を取得し、マウスが虫眼鏡の中心にあることを確認します var xCenter=toBig.clientWidth/2;
   var yCenter=toBig.clientHeight/2;
 
            // フラグは記号です。マウスが押されると true になり、移動できます。flag=false;
   toBig.onmousedown = 関数(){
    フラグ=true;
   }
   toBig.onmouseup = 関数(){
    フラグ=false;
   }
   
   window.onmousemove=関数(ev){
    var ev = ev || window.event;
                //フラグがtrueの場合、虫眼鏡要素は押されてドラッグできます if (flag) {
                    //マウスの現在の位置を取得し、要素自体に加えて移動する位置を計算します var mouseX=ev.clientX,mouseY=ev.clientY;
     var trueX = mouseX-xCenter;
 
                    //虫眼鏡要素が小さい画像の範囲を超えているかどうかを判断します。if (trueX < smallImg.offsetLeft) {
      trueX = smallImg.offsetLeft;
     }
     trueX > smallImg.clientWidth - toBig.offsetWidth の場合{
      trueX = smallImg.clientWidth - toBig.offsetWidth;
     }
     var trueY=mouseY - yCenter;
     trueY <= smallImg.offsetTopの場合{
      trueY = 小さい画像の上端オフセット;
     }
     trueY が smallImg.clientHeight - toBig.offsetHeight の場合 {
      trueY = smallImg.clientHeight - toBig.offsetHeight;
     }
 
                    // 小さい画像が移動するBig.style.left = trueX + "px";
     toBig.style.top = trueY + "px";
     コンソールにログ出力します。
     
     // 大きな画像を移動する位置 bigImg.style.left =-(trueX * q) + "px";
     bigImg.style.top = -(trueY * q) + "px";
    }
   }
   
</スクリプト>

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

以下もご興味があるかもしれません:
  • Javascript サンプル プロジェクトでの虫眼鏡効果の実装プロセス
  • JavaScript で虫眼鏡の特殊効果を実現
  • JavaScript が Jingdong の虫眼鏡の特殊効果を模倣
  • 虫眼鏡ケースのJavaScriptオブジェクト指向実装
  • JavaScript が Jingdong の虫眼鏡効果を模倣
  • JavaScript が Taobao の虫眼鏡効果を模倣
  • 虫眼鏡効果を実現するJavaScript
  • 虫眼鏡の詳細のJavaScript実装

<<:  マークアップ言語 - Web アプリケーション CSS スタイル

>>:  Docker デプロイメント RabbitMQ コンテナ実装プロセス分析

推薦する

Windows に mysql5.7.28 winx64 の解凍バージョンをインストールするための詳細なチュートリアル

目次1. 解凍する2. データフォルダを作成する3. MySQLに環境変数を追加する3.1 コントロ...

Vue ページレンダリングにおけるキーの適用例チュートリアル

導入フロントエンドプロジェクトの開発プロセスでは、el-table によって表示される結果列がコンポ...

Zabbix 監視 Docker アプリケーション構成

コンテナの応用はますます一般的になっていますが、大量のコンテナをどのように管理すればよいのでしょうか...

データベースのインデックス作成に関する知識ポイントのまとめ。必要な情報はすべてここにあります。

データベースインデックスについては皆さんもよくご存知だと思います。 インデックスは、データベース テ...

クリックして展開し、全文を読む機能を実現する純粋なCSS

注記記事表示リストインターフェースを開発する場合、情報の基本的な概要を提供するために記事ヘッダーコン...

MySQL最新バージョン8.0.17解凍版インストールチュートリアル

個人的にはインストール版よりも解凍版の方がインストールしやすいと思います。早速、解凍版のインストール...

Vue+SSMは画像アップロードのプレビュー効果を実現します

現在の要件は、ファイルのアップロード ボタンがあることです。ボタンをクリックすると、アップロードする...

MySQL 5.7.17 のインストールと設定方法のグラフィックチュートリアル (Win7 の場合)

Windows 7 で MySQL 5.7.17 をインストールする方法についてのグラフィック チ...

JavaScript - Vue でのスロットの使用: スロット

目次Vue でのスロットの使用: slotスコープ付きスロット: テンプレートタグで囲む要約するVu...

CSSコンテンツ属性の具体的な使用法

コンテンツ属性は通常、::before および ::after 疑似要素で使用され、疑似要素のコンテ...

JavaScript BOMの構成と一般的なイベントの詳細な説明

目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...

CSS ウェイト値(カスケード)の例の詳細な説明

•CSSには多くのセレクターがあります。複数のセレクターを同じ要素に適用するとどうなるでしょうか? ...

Linux での MySQL 8.0.11 のインストールに関するチュートリアル

1. 公式サイトにアクセスしてインストールパッケージをダウンロードしますダウンロードリンク: クリッ...

MySQLのユーザー権限の確認と管理方法の詳細な説明

この記事では、例を使用して、MySQL ユーザー権限を確認および管理する方法を説明します。ご参考まで...

Vue ログインページ用の動的パーティクル背景プラグインの実装

目次動的パーティクル効果は次のとおりです。プラグインをインストールする動的パーティクル効果は次のとお...