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

推薦する

Web スライスとは何ですか?

IE8 の新機能 Web スライス (Web スライス) Microsoft は 3 月 20 日...

Linux システムに docker をインストールし、ssh 経由で docker コンテナにログインする方法

注: 私はCentosを使ってdockerをインストールしていますステップ1: Dockerをインス...

Ubuntu での MySQL および MySQL Workbench のインストール チュートリアル

Ubuntu に jdk をインストールする: [リンク] UbuntuにEclipseをインストー...

MySQLのカバーインデックスに関する知識ポイントのまとめ

インデックスにクエリする必要があるすべてのフィールドの値が含まれている(またはカバーしている)場合、...

MySQLストアドプロシージャにおけるカーソル(DECLARE)の原理と使い方の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャにおけるカーソル (DECLARE) ...

HTML 5のドラフトは正式な標準にはならなかった

<br />昨日、W3C で新しいHTML 5 ドラフト (ワーキング ドラフト) が ...

div を下から上にスライドさせる CSS3 の例

1. まず、CSS3 のターゲット セレクターを使用し、a タグを使用して id セレクターを指定し...

テキストエリアのテキストをHTMLに変換する方法、つまり復帰改行について

説明: テキストエリアの値の改行を新しい行に変更しますコードをコピーコードは次のとおりです。 <...

WeChatミニプログラム公式顔認証の詳しい説明

ミニプログラムはユーザーの個人情報を収集してアップロードしましたが、拒否されました。こんにちは、ミニ...

Docker に共通コンポーネント (mysql、redis) をインストールする方法

Dockerはmysqlをインストールします docker search mysql 検索 dock...

Vue Nativeを使用したモバイルアプリケーションの構築プロセスの完全な記録

目次序文Vue Nativeの機能宣言的レンダリング双方向バインディングVue.js エコシステムの...

Linux または Android でファイル システムを追加する属性インターフェイスを解析する方法

最初のもの: 1. 主要なヘッダーファイルを追加します。 #include <linux/of...

HTML要素によるFlashブロックの詳細な例

コードをコピーコードは次のとおりです。 wmode パラメータ:透過モード: z-indexを使用し...

Docker データボリュームの一般的な操作コードの例

開発者が Dockerfile を使用してイメージをビルドする場合は、イメージをビルドするときにデー...

Vue プロジェクトにインターフェース リスニング マスクを追加する方法

1. 事業背景マスク レイヤーを使用してユーザーの異常な操作を遮断する方法は、フロントエンドでよく使...