放大鏡制作(2)—此方法比較容易理解

<div class="box" id="box"><!--左側的盒子--><div class="left_img"><!--圖片--><img src="images/small.jpg" class="aaa" alt="小圖片"/><!--黃色小盒子--><div class="mask"></div></div><!--右側的盒子--><div class="right_img"><!--右側盒子內的大圖片--><img src="images/big.jpg" alt="大圖片"/></div></div>

注意:此處的css結構,根據自己的書寫方式進行描述即可

        *{margin: 0;padding: 0;/* box-sizing: border-box; */}.box{width: 1230px;height: 800px;margin: 100px auto;/* border: 1px solid black; */}.left_img{width: 400px;height: 400px;/* border: 5px solid black; */float: left;position: relative;}.left_img .mask{position: absolute;left: 0;top: 0;width: 200px;height: 200px;background-color: yellow;opacity: 0.5;display: none;cursor: move;}.right_img{position: relative;overflow: hidden;width: 400px;height: 400px;/* border: 5px solid black; */margin-left: 10px;float: left;display: none;}.right_img img{position: absolute;top: 0;left: 0;}
  // var box = document.querySelector('.box');var mask = document.querySelector('.mask');var right_img = document.querySelector('.right_img');var left_img = document.querySelector('.left_img');var rightImg = document.querySelector('.right_img img');//鼠標進入時,黃色盒子和右盒子進行隱藏left_img.addEventListener('mouseenter',function(){mask.style.display = 'block';right_img.style.display = 'block';//給盒子設置鼠標進入事件left_img.onmousemove = function(e){//遮蓋的小盒子跟隨鼠標的位置進行移動//鼠標的橫坐標 = 鼠標距離整個頁面左側的距離 - 當前盒子左側的距離//鼠標的縱坐標 = 鼠標距離整個頁面上方的距離 - 當前盒子上方的距離 //mask.offsetWidth / 2;  ,  mask.offsetHeight / 2;  是為了讓鼠標的位置在遮罩盒子的正中央顯示var mx = e.clientX - this.offsetLeft - mask.offsetWidth / 2;var my = e.clientY - this.offsetTop - mask.offsetHeight / 2;//將鼠標的位置信息賦值給當前的遮罩盒子// mask.style.left = mx + 'px';// mask.style.top = my + 'px';//限制元素水平方向移動的最小距離 + 元素在水平方向最大的橫坐標var min_x = 0;var max_x = left_img.offsetWidth - mask.offsetWidth;var min_y = 0;var max_y = left_img.offsetHeight - mask.offsetHeight;//要用鼠標實時的位置 和 限制的范圍比較//水平方向的位置進行比較mx = mx <= min_x ? min_x : mx;mx = mx >= max_x ? max_x : mx;//垂直方向的位置進行比較my = my <= min_y ? min_y : my;my = my >= max_y ? max_y : my;//最后將限制后的位置賦值給遮罩盒子mask.style.left = mx + 'px';mask.style.top = my + 'px';//實現右側盒子中大圖片的移動//左側遮罩盒子移動的距離:左側盒子的寬度 = 右側圖片移動的距離 : 右側圖片的寬度//例如:1 :1 = 2 :2//右側圖片的移動距離 = 左側遮罩盒子移動的距離 * 右側圖片的寬度 / 左側盒子的寬度;// 例如:2 = 1 * 2 / 1rightImg.style.left = - mx * rightImg.offsetWidth / left_img.offsetWidth + 'px';rightImg.style.top = - my * rightImg.offsetHeight / left_img.offsetHeight + 'px';}});//鼠標離開時,黃色盒子和右盒子進行隱藏left_img.addEventListener('mouseleave',function(){mask.style.display = 'none';right_img.style.display = 'none';});

實現效果:

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248170.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248170.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248170.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

call / apply / bind

對于 call / apply / bind 來說&#xff0c;他們的首要目的是用于改變執行上下文的 this 指針。 call / apply 對 call / apply 的使用&#xff0c;一般都如下&#xff0c;用于改變執行環境的上下文。只是 call 接受的是一個一個的參數&#xff0c;而 apply 則是接受的是一個參…

js(Dom+Bom)第八天—Swiper(插件)

Swiper插件(庫) 01-基本介紹 Swiper 是一款免費以及輕量級的移動設備觸控滑塊的js框架&#xff0c;使用硬件加速過渡&#xff08;如果該設備支持的話&#xff09;。主要使用于移動端的網站、移動web apps&#xff0c;native apps和hybrid apps。主要是為IOS而設計的&#xff…

第七節:EF Core調用SQL語句和存儲過程

一. 查詢類(FromSql) 1.說明 A. SQL查詢必須返回實體的所有屬性字段。 B. 結果集中的列名必須與屬性映射到的列名相匹配。 C. SQL查詢不能包含關聯數據 D. 除Select以為的其它SQL語句無法運行。 2.調用SQL語句的幾種情況 A. 基本的原生SQL查詢 B. 利用$內插語法進行傳遞 C. 原生…

沒用的一些水貨

1. 不遞歸的子函數加上inline會跑的很快。 2. 在稠密圖中用dijkstra堆優化會導致跑的很慢。 3. 連著開幾個數組的話&#xff0c;有可能越界了評測機卻返回WA。 4. 如果你用的Dev-C&#xff0c;那么有的時候會出現一些莫名其妙的編譯錯誤。請檢查是否存在未關閉的代碼生成的.exe…

js(Dom+Bom)第八天

JavaScript 移動端事件介紹 touch事件類型 移動設備上無法使用鼠標&#xff0c;當手指按下屏幕的時候會觸發 click,mousedown,mouseup事件&#xff0c;但是在移動設備上有專門的事件&#xff1a; touch 備注&#xff1a; 在移動端touch事件需要通過事件監聽的方式添加touchsta…

程序員計算器HEX、EDC、OCT等等的意思

binary 二進制 對應的是 BINoctal 八進制的 ---- OCThexadecimal 十六進制的 --- HEXdecimal 十進制的 -- DEC 轉載于:https://www.cnblogs.com/132818Creator/p/11459984.html

為什么mysql 5.7.24啟停不顯示錯誤信息?log-error_verbosity參數

關鍵詞&#xff1a;log-error_verbosity &#xff0c;mysql啟停沒有信息&#xff0c;mysql啟停不顯示錯誤信息&#xff0c;mysql不顯示啟停信息 原因就是因為 log-error_verbosity 2 被設置成了1/2&#xff0c;需要設置成3才行。 轉載自&#xff1a;https://www.cnblogs.com/k…

ASP.NET Core 3.0中使用動態控制器路由

原文&#xff1a;Dynamic controller routing in ASP.NET Core 3.0 作者&#xff1a;Filip W 譯文&#xff1a;https://www.cnblogs.com/lwqlun/p/11461657.html 譯者&#xff1a;Lamond Lu 譯者注 今天在網上看到了這篇關于ASP.NET Core動態路由的文章&#xff0c;感覺蠻有意思…

Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet

一個地圖上有若干障礙&#xff0c;問允許出現一個障礙的最大子矩形為多大&#xff1f; 最大子矩形改編 #include<bits/stdc.h> using namespace std; #define rep(i, j, k) for (int i int(j); i < int(k); i) #define dwn(i, j, k) for (int i int(j); i > int…

d3.js 教程 模仿echarts折線圖

今天我們來仿echarts折線圖,這個圖在echarts是折線圖堆疊&#xff0c;但是我用d3改造成了普通的折線圖&#xff0c;只為了大家學習&#xff08;其實在簡單的寫一個布局就可以&#xff09;。廢話不多說商行代碼。 1 制作 Line 類 class Line {constructor() {this._width 1100;…

vue中v-for的使用

本人正在開始學習Vue,每天寫寫基礎的記錄,希望對大家有幫助,如有錯誤還望指出,我也是一個小白,也希望大家能一起進步 v-for指令的使用: 1.循環普通數組 item in list 中的item是自己個想寫什么名寫什么名 另一種寫法 i 表示索引值 2.循環對象數組 3.循環普通對象 4.迭代數字 注…

js高級第一天

JavaScript面向對象 1.1兩大編程思想&#xff1a; 1、面向過程 ? 面向過程&#xff1a;POP(Process-oriented programming) 面向過程就是分析出解決問題所需要的步驟&#xff0c;然后用函數把這些步驟一步一步實現&#xff0c;使用的時候再一個一個的依次調用就可以了。 ?…

d3.js 教程 模仿echarts legend功能

上一節記錄沒有加上echarts的legend功能&#xff0c;這一小節補一下。 1. 數據 我們可以從echarts中看出&#xff0c;折線數據并不是我們傳進入的原始數據&#xff08;多數情況下我們也不會修改原始數據&#xff09;&#xff0c;而是原始數組的一個備份而已。備份數組的方法有很…

小程序2-基本架構講解(一)WXSS樣式

項目里邊生成了不同類型的文件: .json 后綴的 JSON 配置文件.wxml 后綴的 WXML 模板文件.wxss 后綴的 WXSS 樣式文件.js 后綴的 JS 腳本邏輯文件WXSS 樣式 WXSS (WeiXin Style Sheets)是一套樣式語言&#xff0c;用于描述 WXML 的組件樣式。WXSS 具有 CSS 大部分的特性 新增了尺…

js高級—tab欄切換(面向對象做法)

<main><h4>Js 面向對象 動態添加標簽頁</h4><div class"tabsbox" id"tab"><!-- tab 標簽 --><nav class"fisrstnav"><ul><li class"liactive"><span>測試1</span><sp…

MFC的sendmessage和postmessage 以及sendmessagetimeout

PostMessage只負責將消息放到消息隊列中&#xff0c;不確定何時及是否處理&#xff0c;相當于異步操作&#xff0c;執行后馬上返回SendMessage要等到受到消息處理的返回碼&#xff08;DWord類型&#xff09;后才繼續&#xff0c;相當于同步操作&#xff0c;一直在等待&#xff…

python PIL圖像處理-框選

框選圖中位置 代碼 from PIL import Image,ImageDraw,ImageFont,ImageFilter import random#------------------------------------- #filepath,[837,103][942,208]#圖片處理&#xff0c;框選 def pic_rectangle(filepath,bound):image Image.open(filepath)draw ImageDraw.D…

Win10卸載python總是提示error2503失敗各種解決辦法

最近win10的電腦裝了python的3.4&#xff0c;然后想卸載&#xff0c;就總是提示error 2053&#xff0c;類似于這種&#xff1a; 下面是我的坎坷解決之路&#xff1a; 1、網上說&#xff0c;任務管理器 --> 詳細信息 --> explorer.exe結束任務&#xff0c;結束資源管理器&…

js高級—查詢商品案例

<div class"search">按照價格查詢&#xff1a;<input type"text" class"start"> - <input type"text" class"end"><button class"search-price">搜索</button> 按照商品名稱查詢&a…