この記事では、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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: CSS で順序付きリスト項目と順序なしリスト項目のスタイルを設定する方法
Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...
従来、開発者はインスタンスで必要になる可能性のあるデータに対して JavaScript クラス内にプ...
以下の HTML タグには、基本的に既存のタグがすべて含まれています。数分かけて 1 つずつ参照する...
ネガティブな距離は共感を意味します。序文(疑問の提起):プロダクトマネージャーは機能を把握します。機...
1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....
1. 概要Docker イメージを作成するには、次の 3 つの方法があります。 Docker コミッ...
1. タイトルHTML では、<h1></h1> から <h6>...
1. はじめにtable_cache は非常に重要な MySQL パフォーマンス パラメータであり、...
この記事の例では、3階層メニューを再帰的に実装するVueの具体的なコードを参考までに共有しています。...
構造とパフォーマンスの紹介HTML 構造、CSS 表現、JavaScript 動作。Web ページの...
1. ポート 80 が占有されているかどうかを確認します。通常、ポート 80 は Apache サー...
数日前、同僚からMySQLのインデックスについて質問を受けました。大体わかっているのですが、まだ練習...
目次序文ブラウザJS非同期実行の原理ブラウザのイベントループ実行スタックとタスクキューマクロタスクと...
translate と transition は非常に強力で、習得するのは不可能だといつも感じていま...
目次導入ログ分類パラメータファイルエラーログファイル完全なログファイルスロークエリログバイナリログフ...