放大器實(shí)現(xiàn)

經(jīng)常逛某寶可以發(fā)現(xiàn),查看商品時(shí)都有如下的放大功能,鼠標(biāo)放到圖片上可以看到圖片的細(xì)節(jié)唤反,那么它是如何實(shí)現(xiàn)的呢凳寺?是真的將圖片放大了嗎?這篇文章就是講述這個(gè)放大器是如何實(shí)現(xiàn)的彤侍。


原理

放大器其實(shí)并不是真的將圖片放大了肠缨。
假如是原圖片放大,那么放大后勢(shì)必會(huì)出現(xiàn)一定程度的模糊盏阶,而我們平時(shí)所看到的晒奕,放大后反而更清晰了。
所以這兩張圖并不相同名斟,一個(gè)是縮略圖脑慧,另一個(gè)則是前者的高清放大版
當(dāng)鼠標(biāo)放在左側(cè)盒子上時(shí)砰盐,使遮罩和右側(cè)“放大“圖片顯示闷袒,鼠標(biāo)移動(dòng),帶著遮罩隨之移動(dòng)岩梳,并使右側(cè)圖片等比例進(jìn)行相應(yīng)移動(dòng)囊骤,顯示出對(duì)應(yīng)的放大后的 局部位置。
當(dāng)遮罩層向下移動(dòng)的時(shí)候冀值,這個(gè)時(shí)候大圖等比例向上移動(dòng)也物,就會(huì)顯示對(duì)應(yīng)的局部放大區(qū)域。然后把溢出的部分隱藏即可達(dá)到放大效果池摧。

放大器demo如下:

實(shí)現(xiàn)

要實(shí)現(xiàn)上面demo中的放大器焦除,首先你得準(zhǔn)備兩張圖激况,一張正常大小作彤,另一張高清放大版。

html結(jié)構(gòu)比較簡(jiǎn)單:

<div class="box1">
    <img src="./Images/small.jpg">
    <div class="mask"></div>
</div>
<div class="box2">
    <img src="./Images/big.jpg">
</div>

css部分就不給出了乌逐,無(wú)非是給盒子設(shè)寬高竭讳,調(diào)一下邊距什么的,這里只注意一點(diǎn):

  • 左側(cè)盒子寬高和右側(cè)一定是成比例的

什么意思呢浙踢?
要使放大的區(qū)域與左側(cè)遮蓋的區(qū)域一樣绢慢,那么左右寬高需要保持相同的比例,相信這一點(diǎn)不難理解洛波。

在這里胰舆,遮罩寬高為200px,縮略圖為400px蹬挤,顯示區(qū)域?yàn)?50px缚窿,原圖為900px(上圖所畫(huà)原圖大小僅做參考)
以寬為例:
遮蓋的寬 / 縮略圖的寬 = 顯示區(qū)域的寬 / 原圖的寬。
樣式設(shè)置好了焰扳,寬高也就位了倦零,怎么讓圖片動(dòng)起來(lái)呢误续?
第一步:先讓遮罩動(dòng)起來(lái)
代碼如下:

box1.onmousemove = function(event) {
...
var x = event.pageX - box1.offsetLeft - mask.offsetWidth/2;
var y = event.pageY - box1.offsetTop - mask.offsetHeight/2;
...
}

用 event.pageX減去box1.offsetLeft再減去遮罩的半寬,就得到遮罩的左側(cè)與盒子間的距離扫茅,如下圖:
(如若對(duì)pageX , offsetLeft 等不太清楚蹋嵌,可以參考:JS坐標(biāo)獲取

再對(duì)x進(jìn)行約束,使遮罩無(wú)法移出邊框葫隙,最后將x賦值給left:

...
mask.style.left = x + "px";
mask.style.top = y + "px";
...

這樣每次鼠標(biāo)移動(dòng)就會(huì)更新遮罩的left栽烂、top值,使得遮罩移動(dòng)起來(lái)恋脚。
第二步:等比例移動(dòng)右側(cè)大圖
先求得小圖和大圖的比例關(guān)系愕鼓,再乘上x(chóng)就是大圖要移動(dòng)的距離。

...
var scale = box2.offsetHeight/mask.offsetHeight;
var xx = x*scale;
var yy = y*scale;
img.style.marginLeft = -xx + "px";
img.style.marginTop = -yy + "px";

這樣這個(gè)放大器就基本實(shí)現(xiàn)了慧起,當(dāng)鼠標(biāo)移動(dòng)時(shí)菇晃,遮罩跟隨移動(dòng),同時(shí)右側(cè)大圖等比例移動(dòng)蚓挤,達(dá)到放大的效果磺送。
最后補(bǔ)充一個(gè)在線(xiàn)工具調(diào)整圖片尺寸,個(gè)人覺(jué)得比較方便實(shí)用灿意。

關(guān)于

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末估灿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缤剧,更是在濱河造成了極大的恐慌馅袁,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荒辕,死亡現(xiàn)場(chǎng)離奇詭異汗销,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)抵窒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)弛针,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人李皇,你說(shuō)我怎么就攤上這事削茁。” “怎么了掉房?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵茧跋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我卓囚,道長(zhǎng)瘾杭,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任捍岳,我火速辦了婚禮富寿,結(jié)果婚禮上睬隶,老公的妹妹穿的比我還像新娘。我一直安慰自己页徐,他們只是感情好苏潜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著变勇,像睡著了一般恤左。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搀绣,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天飞袋,我揣著相機(jī)與錄音,去河邊找鬼链患。 笑死巧鸭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的麻捻。 我是一名探鬼主播纲仍,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贸毕!你這毒婦竟也來(lái)了郑叠?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤明棍,失蹤者是張志新(化名)和其女友劉穎乡革,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體摊腋,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沸版,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了歌豺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片推穷。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡心包,死狀恐怖类咧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蟹腾,我是刑警寧澤痕惋,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站娃殖,受9級(jí)特大地震影響值戳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜炉爆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一堕虹、第九天 我趴在偏房一處隱蔽的房頂上張望卧晓。 院中可真熱鬧,春花似錦赴捞、人聲如沸逼裆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胜宇。三九已至,卻和暖如春恢着,著一層夾襖步出監(jiān)牢的瞬間桐愉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工掰派, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留从诲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓靡羡,卻偏偏與公主長(zhǎng)得像盏求,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子亿眠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容