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 で順序付きリスト項目と順序なしリスト項目のスタイルを設定する方法

推薦する

Docker で Tomcat を使用して Web アプリケーションを迅速にデプロイする方法の例

Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...

JavaScript の遅延読み込み属性パターンを理解する

従来、開発者はインスタンスで必要になる可能性のあるデータに対して JavaScript クラス内にプ...

純粋な HTML タグにどれくらい精通していますか?

以下の HTML タグには、基本的に既存のタグがすべて含まれています。数分かけて 1 つずつ参照する...

負の距離(共感) - 相互影響の反復プロセス

ネガティブな距離は共感を意味します。序文(疑問の提起):プロダクトマネージャーは機能を把握します。機...

CSS3実践手法のまとめ(推奨)

1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....

カスタム Docker イメージを作成するための Dockerfile の詳細な説明と CMD と ENTRYPOINT 命令の比較

1. 概要Docker イメージを作成するには、次の 3 つの方法があります。 Docker コミッ...

よく使われる HTML 形式のタグ_Powernode Java Academy

1. タイトルHTML では、<h1></h1> から <h6>...

MySQL 5.6 での table_open_cache パラメータの最適化と適切な構成の詳細な説明

1. はじめにtable_cache は非常に重要な MySQL パフォーマンス パラメータであり、...

Vueは3階層メニューを再帰的に実装する

この記事の例では、3階層メニューを再帰的に実装するVueの具体的なコードを参考までに共有しています。...

シンプルなウェブページレイアウトの構造と表現原理の共有

構造とパフォーマンスの紹介HTML 構造、CSS 表現、JavaScript 動作。Web ページの...

Linux サーバー上のローカル静的リソースにアクセスするために nginx を使用する方法

1. ポート 80 が占有されているかどうかを確認します。通常、ポート 80 は Apache サー...

MySQLインデックスに関する詳細を共有する

数日前、同僚からMySQLのインデックスについて質問を受けました。大体わかっているのですが、まだ練習...

JavaScriptイベント実行メカニズムの深い理解

目次序文ブラウザJS非同期実行の原理ブラウザのイベントループ実行スタックとタスクキューマクロタスクと...

CSS3 で translate と transition を使用する方法

translate と transition は非常に強力で、習得するのは不可能だといつも感じていま...

MySQL の重要なログファイルの包括的なインベントリ

目次導入ログ分類パラメータファイルエラーログファイル完全なログファイルスロークエリログバイナリログフ...