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 コンテナ実装プロセス分析

推薦する

MySQLデータファイルの保存場所を表示する方法

次のような疑問が湧くかもしれません。MySQLをローカル (自分のコンピュータ) にインストールした...

MySQL MGR の利点は何ですか?

MGR (MySQL グループ レプリケーション) は、バージョン 5.7 で追加された新しい機能...

DockerでLNMPアーキテクチャを展開する方法

環境要件: IPホスト名192.168.1.1ノード1プロジェクト計画:コンテナネットワークセグメン...

JavaScriptのプロトタイプオブジェクトを徹底的に理解しましょう

目次1. プロトタイプとは何ですか? 1.1 関数プロトタイプオブジェクト1.2 コンストラクタを使...

Reactのコンポーネント共同利用実装

目次ネスティング親子コンポーネント通信ブラザーコンポーネント通信撤回するReact の Linked...

jsを使って簡単な計算機を作る

この記事では、jsで簡単な計算機を作成する具体的なコードを参考までに共有します。具体的な内容は次のと...

Vueは虫眼鏡付きの検索ボックスを実装します

この記事では、Vueを使用して虫眼鏡付きの検索ボックスを実装する方法を紹介します。具体的な内容は次の...

HTML+CSS マージテーブル境界線サンプルコード

table タグと td タグに境界線を追加すると、デフォルトでは次のように二重境界線が使用されます...

MySQLでデータテーブルを作成するときにエンジンMyISAM/InnoDBを設定する

mysql を構成するときに、構成ファイル内のデフォルトのストレージ エンジンを InnoDB に設...

MySQL 20 の高性能アーキテクチャ設計原則 (収集する価値あり)

オープンソース データベース アーキテクチャの設計原則01. 技術の選択最も使い慣れていて、最大限に...

JS ES 新機能テンプレート文字列

目次1. テンプレート文字列とは何ですか? 2. 複数行のテンプレート文字列2.1 式付きテンプレー...

Linux のスケジュールタスク Crontab コマンドの使用に関する詳細な説明と概要

crontab コマンドは、Unix および Linux で定期的な実行命令を設定するために使用され...

CSS の vertical-align プロパティとベースラインの問題に関する深い理解

vertical-align属性は、主にインライン要素の配置を変更するために使用されます。インライン...

Windows での MySQL5 グリーン バージョンのインストールの概要 (推奨)

1 MySQLをダウンロードするダウンロードアドレス: http://downloads.mysq...

MySQLカスタム関数の簡単な使用例

この記事では、例を使用して MySQL カスタム関数の使用方法を説明します。ご参考までに、詳細は以下...