大きな箱の中に写真があります。マウスをその上に置くと、半透明のマスク レイヤーが表示されます。マウスを動かすと、マスク レイヤーも一緒に移動します。箱の横には拡大写真もあります。拡大写真の位置は、マスク レイヤーの位置によって変わります。マウスを大きな箱から離すと、マスク レイヤーと拡大写真が消えます。 実装のアイデア1. HTMLとCSSでボックス、マスクレイヤー、拡大画像ページを編集し、マスクレイヤーと拡大画像をデフォルトで非表示に設定します。 注意:拡大画像のオフセットには、マスク レイヤーの移動方向と反対の負の値が与えられます。 コードサンプル<!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta http-equiv="X-UA-compatible" content="IE=edge"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <title>携帯電話の詳細ページ</title> <!-- <link rel="スタイルシート" href="css/detail.css" > <script src="js/detail.js"></script> --> <スタイル> * { マージン: 0; パディング: 0; } .詳細コンテンツ{ 幅: 1200ピクセル; マージン: 0 自動; } 画像 { 境界線: 0; 垂直位置合わせ: 中央; } .preview_img { 位置: 相対的; 幅: 400ピクセル; 高さ: 400px; 上マージン: 30px; 境界線: 1px 実線 #ccc; } .preview_img 画像 { 幅: 100%; 高さ: 100%; } 。マスク { 表示: なし; 位置: 絶対; 上: 0; 左: 0; 幅: 300ピクセル; 高さ: 300px; 背景色: ピンク; 不透明度: .5; カーソル: 移動; } 。大きい { 表示: なし; 位置: 絶対; 上: 0; 左: 410px; 幅: 500ピクセル; 高さ: 500px; 境界線: 1px 実線 #ccc; 背景色: ピンク; zインデックス: 999; オーバーフロー: 非表示; } .bigimg{ 位置: 絶対; 上: 0; 左: 0; 幅: 800ピクセル; 高さ: 800ピクセル; } </スタイル> </head> <本文> <div class="detail-content"> <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> </div> <スクリプト> var previewImg = document.querySelector('.preview_img'); var マスク = document.querySelector('.mask'); var big = document.querySelector('.big'); var bigImg = document.querySelector('.bigImg'); // マウスオーバーボックスイベント previewImg.addEventListener('mouseover', function() { // オクルージョン レイヤーと拡大画像の表示を設定します。mask.style.display = 'block'; big.style.display = 'ブロック'; }) // マウスがボックスを離れるイベント previewImg.addEventListener('mouseout', function() { // オクルージョンレイヤーと拡大画像を非表示に設定します。mask.style.display = 'none'; big.style.display = 'なし'; }) // マウスがボックス内を移動する previewImg.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; // ボックスは正方形なので、水平方向の X 軸の最大移動値のみが計算されます。Y 軸の最大移動値は X 軸と一致します。var maskMax = previewImg.offsetWidth - mask.offsetWidth; // オクルージョンレイヤーがボックス内で移動できるように制限する if (maskX <= 0) { マスクX = 0; } そうでなければ (maskX >= maskMax) { マスクX = マスクMax; } マスクY <= 0の場合{ マスクY = 0; } そうでなければ (maskY >= maskMax) { マスクY = マスクMax; } mask.style.left = maskX + 'px'; mask.style.top = maskY + 'px'; // 拡大画像の最大移動値を計算します。大きな画像の水平移動値 = オクルージョン レイヤーの移動値 * 大きな画像の最大移動距離 / オクルージョン レイヤーの最大移動距離 var bigMax = bigImg.offsetWidth - big.offsetWidth; var bigX = maskX * bigMax / maskMax; var bigY = maskY * bigMax / maskMax; bigImg.style.left = -bigX + 'px'; bigImg.style.top = -bigY + 'px'; }) </スクリプト> </本文> </html> ページ効果: 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Dockerコンテナオーケストレーション実装プロセス分析
目次1. AST抽象構文木を生成する2. ASTのルートノードを作成する3. 子ノードの解析4. テ...
目次1. Dockerをインストールする2. GitLabをインストールする3. GitLabを初期...
html ¶ <html></html> html:xml ¶ <ht...
目次1. はじめに2. プロトタイプチェーン継承3. コンストラクタの継承4. 組み合わせ継承1. ...
現代の Web ビジュアル デザインは、初期の情報の積み重ねから、その後のグラフィックスと抽象化、そ...
この記事では、スライディングカルーセル効果を実現するためのjsの具体的なコードを参考までに共有します...
NGINX の全体的なアーキテクチャは、連携して動作する一連のプロセスによって特徴付けられます。メイ...
1. forEach() は map() に似ています。これも渡された関数に各要素を順番に適用します...
SSHとは何か管理者はリモートでログインして、インターネット経由で接続されたさまざまな場所にある複数...
LEMP(Linux + Nginx + MySQL + PHP)は、基本的に今日のWeb開発者にと...
目次1. 書き込み可能: 書き込み可能2. 列挙可能: 列挙可能3. 設定可能: 設定可能オブジェク...
a タグは主にページ ジャンプを実装するために使用され、これは href 属性または onclick...
目次1. まず、pycharmを使用してDjangoプロジェクトを作成し、関連する環境を設定します。...
水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...
目次1. 配列の平坦化の概念2. 実装1. 減らす2. toString と split 3. 結合...