jsシミュレーションでJingdongの詳細ページで画像を拡大する効果を実現

jsシミュレーションでJingdongの詳細ページで画像を拡大する効果を実現

この記事では、Jingdongの詳細ページの画像の拡大を実現するためのjsの具体的なコードを紹介します。具体的な内容は次のとおりです。

効果:

html:

<div class="preview_img">
 <img src="upload/s3.png" alt="">
 <div class="mask"></div>
 <div class="big">
  <img src="upload/big.jpg" alt="" class="bigImg">
 </div>
</div>

css:

.preview_img {
 位置: 相対的;
 高さ: 398ピクセル;
 境界線: 1px 実線 #ccc;
}
。マスク {
 表示: なし;
 位置: 絶対;
 幅: 300ピクセル;
 高さ: 300px;
 上: 0;
 左: 0;
 背景: #FEFE4F;
 不透明度: .5;
 境界線: 1px 実線 #ccc;
 カーソル: 移動;
}
。大きい {
 表示: なし;
 位置: 絶対;
 幅: 550ピクセル;
 高さ: 550px;
 上: 0;
 左: 410px;
 zインデックス: 999;
 境界線: 1px 実線 #ccc;
 オーバーフロー: 非表示;
}
.bigimg{
 位置: 絶対;
 左: 0;
 上: 0;
}

js (強調):

window.addEventListener('load',function(){
    var preview_img = document.querySelector('.preview_img');
    var マスク = this.document.querySelector('.mask');
    var big = this.document.querySelector('.big');
    var bigImg = this.document.querySelector('.bigImg');
    //マウスオーバー preview_img.addEventListener('mouseover',function(){
        mask.style.display = 'ブロック';
        big.style.display = 'ブロック';
    })
    //マウスアウト preview_img.addEventListener('mouseout',function(){
        マスクスタイル表示 = 'なし';
        big.style.display = 'なし';
    })
    //マウスが動くと preview_img.addEventListener('mousemove',function(e){
        //ボックス内のマウスの座標 var x = e.pageX - this.offsetLeft;
        var y = e.pageY - this.offsetTop;
        // オクルージョン レイヤーが移動する距離 var maskX = x - mask.offsetWidth/2;
        var maskY = y -mask.offsetHeight/2;
        // 大きな画像の移動距離 // オクルージョン レイヤーの最大移動距離 var maskMaxX = preview_img.offsetWidth - mask.offsetWidth;
        var maskMaxY = preview_img.offsetHeight - mask.offsetHeight;
        //X座標が0未満の場合は0のままにします if (maskX <= 0) {
            マスクX = 0;
        }それ以外の場合 (maskX >= maskMaxX) {
            マスクX = マスクMaxX;
        }
        //Y座標が0未満の場合は0のままにします if (maskY <= 0) {
            マスクY = 0;
        }それ以外の場合 (maskY >= maskMaxY) {
            マスクY = マスクMaxY;
        }
        //オクルージョン レイヤーの移動 mask.style.left = maskX + 'px';
        mask.style.top = maskY + 'px';
        
        // 大きな画像の最大移動距離 var bigMaxX = bigImg.offsetWidth - big.offsetWidth;
        var bigMaxY = bigImg.offsetHeight - big.offsetHeight;
        //大きな画像の移動距離XY
        // 大きな画像の移動距離 = オクルージョン レイヤーの移動距離 * 大きな画像の最大移動距離 / オクルージョン レイヤーの最大移動距離 var bigX = maskX * bigMaxX / maskMaxX;
        var bigY = maskY * bigMaxY / maskMaxY;
        // 大きな画像と小さな画像 (マウスの動き) は反対方向です。bigImg.style.left = -bigX + 'px';
        bigImg.style.top = -bigY + 'px';
    })
})

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

以下もご興味があるかもしれません:
  • JS で画像を拡大・縮小する 2 つの簡単な方法
  • js 虫眼鏡拡大画像効果
  • jsは画像をクリックして画像を拡大する方法を実装します
  • jsは画像をクリックすると画面の中央にポップアップして拡大する効果を実現します。
  • JSは、マウスをサムネイルに移動して大きな画像を表示するときに画像のズーム効果を実現します。
  • マウスを上にスライドさせた後の画像拡大とフローティング効果の js コード
  • JavaScript 画像拡大鏡効果コード [コードは比較的シンプルです]
  • 画像拡大表示効果を実現するjs
  • モバイル HTML5 は photoswipe.js を使用して WeChat Moments の写真のズーム効果を模倣します
  • JSウェブページ画像ビューア(IE、FFと互換性あり)は、画像の拡大・縮小や移動を制御できます。

<<:  ウェブデザインの仕事に応募する方法

>>:  CSS で順序付きリスト項目と順序なしリスト項目のスタイルを設定する方法

推薦する

Ansibleを使用してTomcatをバッチでデプロイする方法

1.1 ディレクトリ構造の構築この操作は、nginx+mysql+tomcat+dbのディレクトリ構...

左右の幅を固定し、中央の幅を適応させたHTMLレイアウトのソリューションの詳細な説明

この記事では、次のように、誰にでも共有できる左右幅固定のミドルアダプティブ HTML レイアウトソリ...

CSS を使用して 3 つのステップでショッピング モールのカード クーポンを作成する

今日は618日、主要なショッピングモールはすべてプロモーション活動を行っています。今日は、次のように...

Vue3 のリアクティブ関数 toRef 関数 ref 関数の紹介

目次リアクティブ機能使用法: toRef 関数 (理解するだけ)使用法: ref関数レスポンシブデー...

MySQL オンライン DDL ツール gh-ost 原理分析

目次1. はじめに1.1 原則1.2 プロセス1.3 特徴1.4 githubアドレス2. テスト環...

WebStormはVue3統合APIのソリューションを正しく識別できません

1 問題の説明Vue3 の統合 API は、defineComponent やその他の関数が認識でき...

Windows 10 と MySQL 5.5 のインストールとインストールなしの使用の詳細なチュートリアル (画像とテキスト)

この記事では、Windows 10環境でのMySQL 5.5のインストールと使用方法を紹介します。リ...

ミニプログラムでマインドマップを描く方法

目次マインドマップとは何ですか? F6で描く方法アリペイ微信要約するマインドマップとは何ですか?マイ...

VirtualBox を使用して Mac 上にローカル仮想マシン環境を構築する方法

1. ビッグデータとHadoopビッグデータについて研究し学ぶには、当然 Hadoop から始める必...

Axios はリクエストをキャンセルし、重複リクエストを回避します

目次起源現状リクエストをキャンセル cancelTokenリクエスト方法の変更重複したリクエストを避...

JavaScript でよく使われる 5 つのオブジェクト

目次1. JavaScript オブジェクト1).配列オブジェクト2).ブールオブジェクト3).日付...

MySQL Community Server 5.7.19 インストール ガイド (詳細)

MySQL公式サイトのzipファイルのダウンロードリンク https://dev.mysql.co...

SQL ROW_NUMBER() および OVER() メソッドのケーススタディ

構文フォーマット: row_number() over(partition by grouping ...

Linux サーバーで MySQL リモート接続を有効にする方法

序文以前の非MKレコードを再編成するためのMySQLの学習説明する有効になっていない場合、データベー...