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 で MySQL 5.7.17 をインストールし、エンコードを utf8 に設定する方法

ダウンロードMySQL 公式ダウンロード、Windows (x86、64 ビット)、ZIP アーカイ...

MySqlサブクエリINの実装と最適化

目次IN が遅いのはなぜですか? INとEXISTSのどちらが速いでしょうか?効率を向上させるにはど...

Linux サーバーと Windows システム間でファイルをアップロードおよびダウンロードする方法

背景: Linux サーバーのファイルのアップロードとダウンロード。 XShell+Xftp インス...

vueプロジェクトのマルチ環境設定(.env)の実装

目次マルチ環境構成とは何ですか? また、なぜそれが必要なのですか? .env ファイルはどこで設定さ...

JavaScript カウントダウン プロンプト ボックス

この記事の例では、カウントダウンプロンプトボックスを実装するためのJavaScriptの具体的なコー...

node.js で EventEmitter をカスタマイズする方法

目次序文1. 何ですか2. Node.jsでEventEmitterを使用する方法3. 実施プロセス...

Dockerイメージのエクスポートとインポート操作

基本イメージが以前に構成されていて、これらのイメージが他の場所でも必要な場合はどうなりますか?回答:...

Docker データ管理 (データ ボリュームとデータ ボリューム コンテナー) の詳細な説明

実稼働環境で Docker を使用する場合、多くの場合、データを複数のコンテナ間で永続化または共有す...

HTMLの基本構造を包括的に理解する

HTML入門ハイパーテキスト マークアップ言語: ハイパーテキスト マークアップ言語ハイパーテキスト...

Mysql+JavaSwing に基づくスーパーマーケット商品管理システムの設計と実装

目次1. 機能紹介2. キーコード2.1 ホームページの機能2.2 製品情報を追加する2.3 データ...

10分でDockerを使ったマイクロサービスのデプロイ方法を学ぶ

Docker は 2013 年のリリース以来、広く注目され、ソフトウェア業界を変える可能性を秘めてい...

JavaScript はクリックして画像の形状を変更する (変換アプリケーション) を実装します。

JavaScriptをクリックすると画像の形状が変わります(変形の応用)。参考までに具体的な内容は...

Ubuntu 19.10 で ssh サービスを有効にする (詳細なプロセス)

Ubuntuでsshを開くのに1時間以上かかりました。主な原因は、最初に読んだチュートリアルの手順...

Nginx+Keepalived でデュアルマシン マスターとバックアップを実装する方法

序文まず、高性能サーバーの高可用性またはホットスタンバイソリューションである Keepalived ...